This is needed for status to tell if a repo is checked out in an
unexpected branch.
---
morphlib/gitdir.py | 5 +++++
morphlib/gitdir_tests.py | 10 ++++++++++
2 files changed, 15 insertions(+)
diff --git a/morphlib/gitdir.py b/morphlib/gitdir.py
index cb24730..c075f45 100644
--- a/morphlib/gitdir.py
+++ b/morphlib/gitdir.py
@@ -195,6 +195,11 @@ class GitDirectory(object):
tree = self._rev_parse_tree(ref)
return self.cat_file('blob', tree, filename)
+ @property
+ def HEAD(self):
+ output = self._runcmd(['git', 'rev-parse',
'--abbrev-ref', 'HEAD'])
+ return output.strip()
+
def init(dirname):
'''Initialise a new git repository.'''
diff --git a/morphlib/gitdir_tests.py b/morphlib/gitdir_tests.py
index 175b8ee..84b8787 100644
--- a/morphlib/gitdir_tests.py
+++ b/morphlib/gitdir_tests.py
@@ -137,3 +137,13 @@ class GitDirectoryContentsTests(unittest.TestCase):
gd = morphlib.gitdir.GitDirectory(self.dirname)
self.assertRaises(morphlib.gitdir.InvalidRefError,
gd.read_file, 'bar', 'no-such-ref')
+
+ def test_HEAD(self):
+ gd = morphlib.gitdir.GitDirectory(self.dirname)
+ self.assertEqual(gd.HEAD, 'master')
+
+ gd.branch('foo', 'master')
+ self.assertEqual(gd.HEAD, 'master')
+
+ gd.checkout('foo')
+ self.assertEqual(gd.HEAD, 'foo')
--
1.7.10.4