diff --git a/hgitaly/service/commit.py b/hgitaly/service/commit.py index d65b77c6102b4150c8c63b327773da00851d471f_aGdpdGFseS9zZXJ2aWNlL2NvbW1pdC5weQ==..86b6cde72e6bbd9bece6e7969948f518d0753608_aGdpdGFseS9zZXJ2aWNlL2NvbW1pdC5weQ== 100644 --- a/hgitaly/service/commit.py +++ b/hgitaly/service/commit.py @@ -288,7 +288,11 @@ "could not be found", revision) return CountCommitsResponse() - revs = repo.revs('only(%s, %s)', ctx_end, ctx_start) + if ctx_end.obsolete() or ctx_start.obsolete(): + repo = repo.unfiltered() + + revs = repo.revs('only(%s, %s)', + ctx_end.hex(), ctx_start.hex()) else: ctx = gitlab_revision_changeset(repo, revision) if ctx is None: @@ -296,7 +300,7 @@ "CountCommits revision %r could not be found", revision) return CountCommitsResponse() - revs = repo.revs('::%s', ctx) + revs = repo.unfiltered().revs('::%s', ctx) count = len(revs) else: # Note: if revision is not passed, we return all revs for now. diff --git a/hgitaly/service/tests/test_commit.py b/hgitaly/service/tests/test_commit.py index d65b77c6102b4150c8c63b327773da00851d471f_aGdpdGFseS9zZXJ2aWNlL3Rlc3RzL3Rlc3RfY29tbWl0LnB5..86b6cde72e6bbd9bece6e7969948f518d0753608_aGdpdGFseS9zZXJ2aWNlL3Rlc3RzL3Rlc3RfY29tbWl0LnB5 100644 --- a/hgitaly/service/tests/test_commit.py +++ b/hgitaly/service/tests/test_commit.py @@ -479,10 +479,10 @@ ctx0 = wrapper.write_commit('foo') ctx1 = wrapper.write_commit('bar', parent=ctx0) wrapper.write_commit('baz', parent=ctx1) - wrapper.write_commit('animals', - topic='feature', - parent=ctx0) + topic_hex = wrapper.write_commit('animals', + topic='feature', + parent=ctx0).hex() # simplest calls assert do_rpc(b'branch/default') == 3 assert do_rpc(b'topic/default/feature') == 2 @@ -485,7 +485,8 @@ # simplest calls assert do_rpc(b'branch/default') == 3 assert do_rpc(b'topic/default/feature') == 2 + assert do_rpc(topic_hex) == 2 # when no revision passed, return total commits in repo assert do_rpc(None) == 4 @@ -501,6 +502,12 @@ b'unknown..topic/default/feature', b'unknown')) + # obsolescence + wrapper.command('amend', message=b'amended') + assert do_rpc(topic_hex) == 2 + assert do_rpc(b'branch/default..' + topic_hex) == 1 + assert do_rpc(topic_hex + b'..branch/default') == 2 + def test_last_commit_for_path(grpc_channel, server_repos_root): grpc_stub = CommitServiceStub(grpc_channel)