diff --git a/kallithea/controllers/compare.py b/kallithea/controllers/compare.py --- a/kallithea/controllers/compare.py +++ b/kallithea/controllers/compare.py @@ -133,6 +133,10 @@ class CompareController(BaseRepoControll ) other_changesets = [org_repo.get_changeset(cs) for cs in re.findall(r'[0-9a-fA-F]{40}', so)] + so, se = org_repo.run_git_command( + 'merge-base %s %s' % (org_rev, other_rev) + ) + ancestor = re.findall(r'[0-9a-fA-F]{40}', so)[0] org_changesets = [] else: diff --git a/kallithea/tests/functional/test_compare_local.py b/kallithea/tests/functional/test_compare_local.py --- a/kallithea/tests/functional/test_compare_local.py +++ b/kallithea/tests/functional/test_compare_local.py @@ -154,3 +154,44 @@ class TestCompareController(TestControll ## files response.mustcontain(""".hgignore""") + + def test_compare_revisions_hg_as_form(self): + self.log_user() + rev1 = 'b986218ba1c9' + rev2 = '3d8f361e72ab' + + response = self.app.get(url('compare_url', + repo_name=HG_REPO, + org_ref_type="rev", + org_ref_name=rev1, + other_ref_type="rev", + other_ref_name=rev2, + as_form=True, + ), + extra_environ={'HTTP_X_PARTIAL_XHR': '1'},) + + ## outgoing changesets between those revisions + response.mustcontain("""r1:%s""" % (HG_REPO, rev2)) + + response.mustcontain('Common ancestor') + response.mustcontain("""%s""" % (HG_REPO, rev1)) + + def test_compare_revisions_git_as_form(self): + self.log_user() + rev1 = 'c1214f7e79e02fc37156ff215cd71275450cffc3' + rev2 = '38b5fe81f109cb111f549bfe9bb6b267e10bc557' + + response = self.app.get(url('compare_url', + repo_name=GIT_REPO, + org_ref_type="rev", + org_ref_name=rev1, + other_ref_type="rev", + other_ref_name=rev2, + as_form=True, + ), + extra_environ={'HTTP_X_PARTIAL_XHR': '1'},) + ## outgoing changesets between those revisions + response.mustcontain("""r1:%s""" % (GIT_REPO, rev2[:12])) + + response.mustcontain('Common ancestor') + response.mustcontain("""%s""" % (GIT_REPO, rev1[:12]))