diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2013-09-17 13:12:54 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2013-09-17 14:34:13 +0000 |
commit | 31b0ed683dfe0d99bc82accc05ad329fe527d68f (patch) | |
tree | 073970f19d14db2b40cd7421436b5f531d2ea14a /morphlib | |
parent | 34504edc0e8d7c500434c20d7bad52b1f5f2014c (diff) | |
download | morph-31b0ed683dfe0d99bc82accc05ad329fe527d68f.tar.gz |
gitdir: add HEAD property to find the current branch
This is needed for status to tell if a repo is checked out in an
unexpected branch.
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/gitdir.py | 5 | ||||
-rw-r--r-- | morphlib/gitdir_tests.py | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/morphlib/gitdir.py b/morphlib/gitdir.py index cb247303..c075f456 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 175b8ee7..84b8787a 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') |