Mercurial > kallithea
changeset 4394:dc4a768927eb
pull requests: fix same git repository pull-request issue
Currentry, Kallithea can not create pull-request from same git repository.
Because, ancestor variable is not initialized when create pull-request from same git repository.
This patch find ancestor by `git merge-base` command and initialize it.
author | Takumi IINO <trot.thunder@gmail.com> |
---|---|
date | Mon, 07 Jul 2014 01:45:19 +0900 |
parents | fc2b3a19177d |
children | a6dfd14d4b20 |
files | kallithea/controllers/compare.py kallithea/tests/functional/test_compare_local.py |
diffstat | 2 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/compare.py Sun Jul 06 01:59:58 2014 +0900 +++ b/kallithea/controllers/compare.py Mon Jul 07 01:45:19 2014 +0900 @@ -133,6 +133,10 @@ ) 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:
--- a/kallithea/tests/functional/test_compare_local.py Sun Jul 06 01:59:58 2014 +0900 +++ b/kallithea/tests/functional/test_compare_local.py Mon Jul 07 01:45:19 2014 +0900 @@ -154,3 +154,44 @@ ## files response.mustcontain("""<a href="#C--c8e92ef85cd1">.hgignore</a>""") + + 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("""<a href="/%s/changeset/3d8f361e72ab303da48d799ff1ac40d5ac37c67e">r1:%s</a>""" % (HG_REPO, rev2)) + + response.mustcontain('Common ancestor') + response.mustcontain("""<a href="/%s/changeset/b986218ba1c9b0d6a259fac9b050b1724ed8e545">%s</a>""" % (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("""<a href="/%s/changeset/38b5fe81f109cb111f549bfe9bb6b267e10bc557">r1:%s</a>""" % (GIT_REPO, rev2[:12])) + + response.mustcontain('Common ancestor') + response.mustcontain("""<a href="/%s/changeset/c1214f7e79e02fc37156ff215cd71275450cffc3">%s</a>""" % (GIT_REPO, rev1[:12]))