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]))