diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 6a722a0..7c10aef 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -844,7 +844,7 @@ def read_git_lines(args, abspath, keepends=False, **kw): ).splitlines(keepends) -def get_revs_between(oldrev, newrev, abspath, forced=False): +def get_revs_between(oldrev, newrev, abspath, refname, forced=False): """ Yield revisions between HEAD and BASE. """ cmd = ['rev-list', '%s...%s' % (oldrev, newrev)] @@ -856,6 +856,8 @@ def get_revs_between(oldrev, newrev, abspath, forced=False): elif set(oldrev) == set('0') or set(oldrev) == set('^0'): head = get_default_branch(abspath) cmd = ['rev-list', '%s' % newrev, '^%s' % head] + if head in refname: + cmd = ['rev-list', '%s' % newrev] return pagure.lib.git.read_git_lines(cmd, abspath) diff --git a/tests/test_pagure_lib_git.py b/tests/test_pagure_lib_git.py index ebadbce..6eb452b 100644 --- a/tests/test_pagure_lib_git.py +++ b/tests/test_pagure_lib_git.py @@ -1259,18 +1259,18 @@ index 0000000..60f7480 # Case 1, repo BASE is null and HEAD is equal to from_hash to_hash = '0' output1 = pagure.lib.git.get_revs_between( - to_hash, from_hash, gitrepo) + to_hash, from_hash, gitrepo, 'refs/heads/master') self.assertEqual(output1, [from_hash]) # Case 2, get revs between two commits (to_hash, from_hash) to_hash = output[0].replace("'", '') output2 = pagure.lib.git.get_revs_between( - to_hash, from_hash, gitrepo) + to_hash, from_hash, gitrepo, 'refs/heads/master') self.assertEqual(output2, [to_hash]) # Case 3, get revs between two commits (from_hash, to_hash) output3 = pagure.lib.git.get_revs_between( - from_hash, to_hash, gitrepo) + from_hash, to_hash, gitrepo, 'refs/heads/master') self.assertEqual(output3, [to_hash]) # Case 4, get revs between two commits on two different branches @@ -1309,7 +1309,7 @@ index 0000000..60f7480 shutil.rmtree(newgitrepo) output4 = pagure.lib.git.get_revs_between( - '0', 'feature', gitrepo) + '0', branch_commit.oid.hex, gitrepo, 'refs/heads/feature') self.assertEqual(output4, [branch_commit.oid.hex]) def test_get_author(self):