# HG changeset patch # User Mads Kiilerich # Date 1359756790 -3600 # Node ID c9b0f1d363c7394258b3532b757d871c9a274e5f # Parent a91fa221a3b84ce706de6b4cdca4e96b28b27932 compare: swap org and other when they refer to different repos, ie are pull request style Pull requests will have a different from/to description - but in a consistent and slightly better way that can be improved later. A pull request diff is empathic: "How will this look for the peer I'm proposing to" style. diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/config/routing.py --- a/rhodecode/config/routing.py Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/config/routing.py Fri Feb 01 23:13:10 2013 +0100 @@ -493,8 +493,8 @@ controller='compare', action='index', conditions=dict(function=check_repo), requirements=dict( - org_ref_type='(branch|book|tag|rev|__org_ref_type__)', - other_ref_type='(branch|book|tag|rev|__other_ref_type__)') + org_ref_type='(branch|book|tag|rev|__other_ref_type__)', + other_ref_type='(branch|book|tag|rev|__org_ref_type__)') ) rmap.connect('pullrequest_home', diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/controllers/compare.py --- a/rhodecode/controllers/compare.py Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/controllers/compare.py Fri Feb 01 23:13:10 2013 +0100 @@ -132,7 +132,7 @@ c.statuses = c.rhodecode_db_repo.statuses([x.raw_id for x in c.cs_ranges]) - c.target_repo = c.repo_name + c.target_repo = c.other_repo.repo_name # defines that we need hidden inputs with changesets c.as_form = request.GET.get('as_form', False) if partial: @@ -150,7 +150,7 @@ if c.cs_ranges[0].parents else EmptyChangeset(), 'raw_id')) log.debug('Changed org_ref from %s to %s' % (_org_ref, org_ref)) - other_repo = org_repo + org_repo = other_repo diff_limit = self.cut_off_limit if not fulldiff else None diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/model/pull_request.py --- a/rhodecode/model/pull_request.py Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/model/pull_request.py Fri Feb 01 23:13:10 2013 +0100 @@ -190,21 +190,21 @@ #case two independent repos if org_repo != other_repo: - hgrepo = unionrepo.unionrepository(org_repo.baseui, - org_repo.path, - other_repo.path) - revs = ["ancestors(id('%s')) and not ancestors(id('%s'))" % - (org_rev, other_rev)] + hgrepo = unionrepo.unionrepository(other_repo.baseui, + other_repo.path, + org_repo.path) + # all the changesets we are looking for will be in other_repo, + # so rev numbers from hgrepo can be used in other_repo #no remote compare do it on the same repository else: - hgrepo = org_repo._repo - revs = ["ancestors(id('%s')) and not ancestors(id('%s'))" % - (other_rev, org_rev)] + hgrepo = other_repo._repo + revs = ["ancestors(id('%s')) and not ancestors(id('%s'))" % + (other_rev, org_rev)] out = scmutil.revrange(hgrepo, revs) for cs in (out): - changesets.append(org_repo.get_changeset(cs)) + changesets.append(other_repo.get_changeset(cs)) elif alias == 'git': assert org_repo == other_repo, (org_repo, other_repo) # no git support for different repos diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/templates/base/base.html --- a/rhodecode/templates/base/base.html Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/templates/base/base.html Fri Feb 01 23:13:10 2013 +0100 @@ -220,7 +220,7 @@
  • ${h.link_to(_('open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}
  • %endif %if c.rhodecode_db_repo.fork: -
  • ${h.link_to(_('compare fork'),h.url('compare_url',repo_name=c.repo_name,org_ref_type='branch',org_ref=request.GET.get('branch') or 'default',other_repo=c.rhodecode_db_repo.fork.repo_name,other_ref_type='branch',other_ref='default'),class_='compare_request')}
  • +
  • ${h.link_to(_('compare fork'),h.url('compare_url',repo_name=c.rhodecode_db_repo.fork.repo_name,org_ref_type='branch',org_ref='default',other_repo=c.repo_name,other_ref_type='branch',other_ref=request.GET.get('branch') or 'default'),class_='compare_request')}
  • %endif
  • ${h.link_to(_('lightweight changelog'),h.url('shortlog_home',repo_name=c.repo_name),class_='shortlog')}
  • ${h.link_to(_('search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}
  • diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/templates/changelog/changelog.html --- a/rhodecode/templates/changelog/changelog.html Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/templates/changelog/changelog.html Fri Feb 01 23:13:10 2013 +0100 @@ -37,7 +37,7 @@ %if c.rhodecode_db_repo.fork: - ${_('Compare fork with parent')} + ${_('Compare fork with parent')} %endif %if h.is_hg(c.rhodecode_repo): ${_('open new pull request')} diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/templates/forks/forks_data.html --- a/rhodecode/templates/forks/forks_data.html Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/templates/forks/forks_data.html Fri Feb 01 23:13:10 2013 +0100 @@ -17,7 +17,7 @@
    ${_('forked')} - ${h.age(f.created_on)} ${_('Compare fork')}
    diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/templates/pullrequests/pullrequest.html --- a/rhodecode/templates/pullrequests/pullrequest.html Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/templates/pullrequests/pullrequest.html Fri Feb 01 23:13:10 2013 +0100 @@ -140,12 +140,12 @@ YUD.setStyle(YUD.get('pull_request_overview_url').parentElement,'display','none'); //url template var url = "${h.url('compare_url', - repo_name='__org_repo__', - org_ref_type='__org_ref_type__', - org_ref='__org_ref__', - other_repo='__other_repo__', - other_ref_type='__other_ref_type__', - other_ref='__other_ref__', + repo_name='__other_repo__', + org_ref_type='__other_ref_type__', + org_ref='__other_ref__', + other_repo='__org_repo__', + other_ref_type='__org_ref_type__', + other_ref='__org_ref__', as_form=True, rev_start=request.GET.get('rev_start',''), rev_end=request.GET.get('rev_end',''))}"; diff -r a91fa221a3b8 -r c9b0f1d363c7 rhodecode/tests/functional/test_compare.py --- a/rhodecode/tests/functional/test_compare.py Mon Feb 04 21:26:01 2013 +0100 +++ b/rhodecode/tests/functional/test_compare.py Fri Feb 01 23:13:10 2013 +0100 @@ -89,16 +89,16 @@ rev1 = 'default' rev2 = 'default' response = self.app.get(url(controller='compare', action='index', - repo_name=repo2.repo_name, + repo_name=repo1.repo_name, org_ref_type="branch", - org_ref=rev1, - other_repo=repo1.repo_name, + org_ref=rev2, + other_repo=repo2.repo_name, other_ref_type="branch", - other_ref=rev2, + other_ref=rev1, )) try: - response.mustcontain('%s@%s -> %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2)) + response.mustcontain('%s@%s -> %s@%s' % (repo1.repo_name, rev2, repo2.repo_name, rev1)) response.mustcontain("""Showing 2 commits""") response.mustcontain("""1 file changed with 2 insertions and 0 deletions""") @@ -108,9 +108,9 @@ response.mustcontain("""r1:%s""" % (repo2.repo_name, cs1.raw_id, cs1.short_id)) response.mustcontain("""r2:%s""" % (repo2.repo_name, cs2.raw_id, cs2.short_id)) ## files - response.mustcontain("""file1""" % (repo2.repo_name, rev1, rev2, repo1.repo_name)) + response.mustcontain("""file1""" % (repo1.repo_name, rev2, rev1, repo2.repo_name)) #swap - response.mustcontain("""[swap]""" % (repo1.repo_name, rev1, rev2, repo2.repo_name)) + response.mustcontain("""[swap]""" % (repo2.repo_name, rev1, rev2, repo1.repo_name)) finally: RepoModel().delete(r2_id) RepoModel().delete(r1_id) @@ -147,16 +147,16 @@ rev1 = 'default' rev2 = 'default' response = self.app.get(url(controller='compare', action='index', - repo_name=repo2.repo_name, + repo_name=repo1.repo_name, org_ref_type="branch", - org_ref=rev1, - other_repo=repo1.repo_name, + org_ref=rev2, + other_repo=repo2.repo_name, other_ref_type="branch", - other_ref=rev2, + other_ref=rev1, )) try: - response.mustcontain('%s@%s -> %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2)) + response.mustcontain('%s@%s -> %s@%s' % (repo1.repo_name, rev2, repo2.repo_name, rev1)) response.mustcontain("""Showing 2 commits""") response.mustcontain("""1 file changed with 2 insertions and 0 deletions""") @@ -166,9 +166,9 @@ response.mustcontain("""r1:%s""" % (repo2.repo_name, cs1.raw_id, cs1.short_id)) response.mustcontain("""r2:%s""" % (repo2.repo_name, cs2.raw_id, cs2.short_id)) ## files - response.mustcontain("""file1""" % (repo2.repo_name, rev1, rev2, repo1.repo_name)) + response.mustcontain("""file1""" % (repo1.repo_name, rev2, rev1, repo2.repo_name)) #swap - response.mustcontain("""[swap]""" % (repo1.repo_name, rev1, rev2, repo2.repo_name)) + response.mustcontain("""[swap]""" % (repo2.repo_name, rev1, rev2, repo1.repo_name)) finally: RepoModel().delete(r2_id) RepoModel().delete(r1_id)