diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2011-02-23 00:06:38 +0100 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2011-02-23 00:06:38 +0100 |
commit | 96c7ac239a2c9e303233e58daee02101cc4ebf3d (patch) | |
tree | 3ddff6e1f87311fb4846d5fa37b06d9d3d780048 /git | |
parent | 5eb7fd3f0dd99dc6c49da6fd7e78a392c4ef1b33 (diff) | |
download | gitpython-96c7ac239a2c9e303233e58daee02101cc4ebf3d.tar.gz |
Fixed incorrect handling of rev_parse if it was fed with branches that looked like hexshas. Thanks to Ning (frostyplanet) who pointed this issue out
Diffstat (limited to 'git')
-rw-r--r-- | git/repo/fun.py | 6 | ||||
-rw-r--r-- | git/test/test_repo.py | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/git/repo/fun.py b/git/repo/fun.py index 7a5984d3..03d55716 100644 --- a/git/repo/fun.py +++ b/git/repo/fun.py @@ -59,7 +59,11 @@ def name_to_object(repo, name, return_ref=False): else: hexsha = name # END handle short shas - else: + #END find sha if it matches + + # if we couldn't find an object for what seemed to be a short hexsha + # try to find it as reference anyway, it could be named 'aaa' for instance + if hexsha is None: for base in ('%s', 'refs/%s', 'refs/tags/%s', 'refs/heads/%s', 'refs/remotes/%s', 'refs/remotes/%s/HEAD'): try: hexsha = SymbolicReference.dereference_recursive(repo, base % name) diff --git a/git/test/test_repo.py b/git/test/test_repo.py index f517b9f1..deadbe9a 100644 --- a/git/test/test_repo.py +++ b/git/test/test_repo.py @@ -464,6 +464,12 @@ class TestRepo(TestBase): return orig_obj + @with_rw_repo('HEAD', bare=False) + def test_rw_rev_parse(self, rwrepo): + # verify it does not confuse branches with hexsha ids + ahead = rwrepo.create_head('aaaaaaaa') + assert(rwrepo.rev_parse(str(ahead)) == ahead.commit) + def test_rev_parse(self): rev_parse = self.rorepo.rev_parse @@ -573,7 +579,6 @@ class TestRepo(TestBase): # currently, nothing more is supported self.failUnlessRaises(NotImplementedError, rev_parse, "@{1 week ago}") - def test_repo_odbtype(self): target_type = GitDB if sys.version_info[1] < 5: |