Show More
@@ -88,14 +88,14 b' class CompareController(BaseRepoControll' | |||
|
88 | 88 | org_ref = (org_ref_type, org_ref) |
|
89 | 89 | other_ref = (other_ref_type, other_ref) |
|
90 | 90 | other_repo = request.GET.get('repo', org_repo) |
|
91 |
|
|
|
91 | remote_compare = str2bool(request.GET.get('bundle', True)) | |
|
92 | 92 | c.fulldiff = fulldiff = request.GET.get('fulldiff') |
|
93 | 93 | |
|
94 | 94 | c.swap_url = h.url('compare_url', repo_name=other_repo, |
|
95 | 95 | org_ref_type=other_ref[0], org_ref=other_ref[1], |
|
96 | 96 | other_ref_type=org_ref[0], other_ref=org_ref[1], |
|
97 | 97 | repo=org_repo, as_form=request.GET.get('as_form'), |
|
98 |
bundle= |
|
|
98 | bundle=remote_compare) | |
|
99 | 99 | |
|
100 | 100 | c.org_repo = org_repo = Repository.get_by_repo_name(org_repo) |
|
101 | 101 | c.other_repo = other_repo = Repository.get_by_repo_name(other_repo) |
@@ -128,20 +128,21 b' class CompareController(BaseRepoControll' | |||
|
128 | 128 | if partial: |
|
129 | 129 | return render('compare/compare_cs.html') |
|
130 | 130 | |
|
131 | if not bundle_compare and c.cs_ranges: | |
|
131 | c.org_ref = org_ref[1] | |
|
132 | c.other_ref = other_ref[1] | |
|
133 | ||
|
134 | if not remote_compare and c.cs_ranges: | |
|
132 | 135 | # case we want a simple diff without incoming changesets, just |
|
133 | 136 | # for review purposes. Make the diff on the forked repo, with |
|
134 | 137 | # revision that is common ancestor |
|
135 | 138 | other_ref = ('rev', c.cs_ranges[-1].parents[0].raw_id) |
|
136 | 139 | other_repo = org_repo |
|
137 | 140 | |
|
138 | c.org_ref = org_ref[1] | |
|
139 | c.other_ref = other_ref[1] | |
|
141 | diff_limit = self.cut_off_limit if not fulldiff else None | |
|
142 | _diff = diffs.differ(org_repo, org_ref, other_repo, other_ref, | |
|
143 | discovery_data, remote_compare=remote_compare) | |
|
140 | 144 | |
|
141 | _diff = diffs.differ(other_repo, other_ref, org_repo, org_ref, | |
|
142 | discovery_data, bundle_compare=bundle_compare) | |
|
143 | diff_limit = self.cut_off_limit if not fulldiff else None | |
|
144 | diff_processor = diffs.DiffProcessor(_diff, format='gitdiff', | |
|
145 | diff_processor = diffs.DiffProcessor(_diff or '', format='gitdiff', | |
|
145 | 146 | diff_limit=diff_limit) |
|
146 | 147 | _parsed = diff_processor.prepare() |
|
147 | 148 | |
@@ -151,8 +152,13 b' class CompareController(BaseRepoControll' | |||
|
151 | 152 | |
|
152 | 153 | c.files = [] |
|
153 | 154 | c.changes = {} |
|
154 | ||
|
155 | c.lines_added = 0 | |
|
156 | c.lines_deleted = 0 | |
|
155 | 157 | for f in _parsed: |
|
158 | st = f['stats'] | |
|
159 | if st[0] != 'b': | |
|
160 | c.lines_added += st[0] | |
|
161 | c.lines_deleted += st[1] | |
|
156 | 162 | fid = h.FID('', f['filename']) |
|
157 | 163 | c.files.append([fid, f['operation'], f['filename'], f['stats']]) |
|
158 | 164 | diff = diff_processor.as_html(enable_comments=False, parsed_lines=[f]) |
@@ -51,6 +51,7 b' from rhodecode.model.comment import Chan' | |||
|
51 | 51 | from rhodecode.model.changeset_status import ChangesetStatusModel |
|
52 | 52 | from rhodecode.model.forms import PullRequestForm |
|
53 | 53 | from rhodecode.lib.vcs.exceptions import EmptyRepositoryError |
|
54 | from rhodecode.lib.vcs.backends.base import EmptyChangeset | |
|
54 | 55 | |
|
55 | 56 | log = logging.getLogger(__name__) |
|
56 | 57 | |
@@ -277,7 +278,9 b' class PullrequestsController(BaseRepoCon' | |||
|
277 | 278 | # case we want a simple diff without incoming changesets, just |
|
278 | 279 | # for review purposes. Make the diff on the forked repo, with |
|
279 | 280 | # revision that is common ancestor |
|
280 |
other_ref = ('rev', c.cs_ranges[-1].parents[0] |
|
|
281 | other_ref = ('rev', getattr(c.cs_ranges[-1].parents[0] | |
|
282 | if c.cs_ranges[-1].parents | |
|
283 | else EmptyChangeset(), 'raw_id')) | |
|
281 | 284 | other_repo = org_repo |
|
282 | 285 | |
|
283 | 286 | c.statuses = org_repo.statuses([x.raw_id for x in c.cs_ranges]) |
@@ -286,9 +289,9 b' class PullrequestsController(BaseRepoCon' | |||
|
286 | 289 | |
|
287 | 290 | c.org_ref = org_ref[1] |
|
288 | 291 | c.other_ref = other_ref[1] |
|
289 | # diff needs to have swapped org with other to generate proper diff | |
|
290 | _diff = diffs.differ(other_repo, other_ref, org_repo, org_ref, | |
|
292 | _diff = diffs.differ(org_repo, org_ref, other_repo, other_ref, | |
|
291 | 293 | discovery_data) |
|
294 | ||
|
292 | 295 | diff_processor = diffs.DiffProcessor(_diff, format='gitdiff') |
|
293 | 296 | _parsed = diff_processor.prepare() |
|
294 | 297 |
@@ -702,52 +702,48 b' class InMemoryBundleRepo(bundlerepositor' | |||
|
702 | 702 | |
|
703 | 703 | |
|
704 | 704 | def differ(org_repo, org_ref, other_repo, other_ref, discovery_data=None, |
|
705 |
|
|
|
705 | remote_compare=False, context=3, ignore_whitespace=False): | |
|
706 | 706 | """ |
|
707 |
General differ between branches, bookmarks, revisions of two remote r |
|
|
708 | repositories | |
|
707 | General differ between branches, bookmarks, revisions of two remote or | |
|
708 | local but related repositories | |
|
709 | 709 | |
|
710 | 710 | :param org_repo: |
|
711 | :type org_repo: | |
|
712 | 711 | :param org_ref: |
|
713 | :type org_ref: | |
|
714 | 712 | :param other_repo: |
|
715 | 713 | :type other_repo: |
|
716 | :param other_ref: | |
|
717 | 714 | :type other_ref: |
|
718 | 715 | """ |
|
719 | 716 | |
|
720 | bundlerepo = None | |
|
721 | ignore_whitespace = ignore_whitespace | |
|
722 | context = context | |
|
723 | 717 | org_repo_scm = org_repo.scm_instance |
|
718 | other_repo_scm = other_repo.scm_instance | |
|
719 | ||
|
724 | 720 | org_repo = org_repo_scm._repo |
|
725 |
other_repo = other_repo |
|
|
726 | opts = diffopts(git=True, ignorews=ignore_whitespace, context=context) | |
|
721 | other_repo = other_repo_scm._repo | |
|
722 | ||
|
727 | 723 | org_ref = org_ref[1] |
|
728 | 724 | other_ref = other_ref[1] |
|
729 | 725 | |
|
730 | 726 | if org_repo == other_repo: |
|
731 | 727 | log.debug('running diff between %s@%s and %s@%s' |
|
732 | 728 | % (org_repo, org_ref, other_repo, other_ref)) |
|
733 |
_diff = org_repo_scm.get_diff(rev1=o |
|
|
729 | _diff = org_repo_scm.get_diff(rev1=org_ref, rev2=other_ref, | |
|
734 | 730 | ignore_whitespace=ignore_whitespace, context=context) |
|
735 | 731 | return _diff |
|
736 | 732 | |
|
737 |
elif |
|
|
738 | ||
|
733 | elif remote_compare: | |
|
734 | opts = diffopts(git=True, ignorews=ignore_whitespace, context=context) | |
|
739 | 735 | common, incoming, rheads = discovery_data |
|
740 |
o |
|
|
736 | org_repo_peer = localrepo.locallegacypeer(org_repo.local()) | |
|
741 | 737 | # create a bundle (uncompressed if other repo is not local) |
|
742 |
if o |
|
|
738 | if org_repo_peer.capable('getbundle'): | |
|
743 | 739 | # disable repo hooks here since it's just bundle ! |
|
744 | 740 | # patch and reset hooks section of UI config to not run any |
|
745 | 741 | # hooks on fetching archives with subrepos |
|
746 |
for k, _ in o |
|
|
747 |
o |
|
|
742 | for k, _ in org_repo.ui.configitems('hooks'): | |
|
743 | org_repo.ui.setconfig('hooks', k, None) | |
|
748 | 744 | |
|
749 |
unbundle = o |
|
|
750 |
|
|
|
745 | unbundle = org_repo.getbundle('incoming', common=common, | |
|
746 | heads=None) | |
|
751 | 747 | |
|
752 | 748 | buf = BytesIO() |
|
753 | 749 | while True: |
@@ -764,8 +760,9 b' def differ(org_repo, org_ref, other_repo' | |||
|
764 | 760 | bundlerepo = InMemoryBundleRepo(ui, path=org_repo.root, |
|
765 | 761 | bundlestream=unbundle) |
|
766 | 762 | |
|
767 |
return ''.join(patch.diff(bundlerepo |
|
|
768 |
node1=or |
|
|
769 |
node2=o |
|
|
770 | opts=opts)) | |
|
763 | return ''.join(patch.diff(bundlerepo, | |
|
764 | node1=other_repo[other_ref].node(), | |
|
765 | node2=org_repo[org_ref].node(), | |
|
766 | opts=opts)) | |
|
771 | 767 | |
|
768 | return '' No newline at end of file |
@@ -185,21 +185,21 b' class PullRequestModel(BaseModel):' | |||
|
185 | 185 | |
|
186 | 186 | revs = [ |
|
187 | 187 | "ancestors(%s('%s')) and not ancestors(%s('%s'))" % ( |
|
188 | _revset_predicates[other_ref[0]], other_ref[1], | |
|
188 | 189 | _revset_predicates[org_ref[0]], org_ref[1], |
|
189 | _revset_predicates[other_ref[0]], other_ref[1] | |
|
190 | 190 | ) |
|
191 | 191 | ] |
|
192 | 192 | |
|
193 | 193 | out = scmutil.revrange(org_repo._repo, revs) |
|
194 |
for cs in |
|
|
194 | for cs in (out): | |
|
195 | 195 | changesets.append(org_repo.get_changeset(cs)) |
|
196 | 196 | elif alias == 'git': |
|
197 | 197 | so, se = org_repo.run_git_command( |
|
198 | 'log --pretty="format: %%H" -s -p %s..%s' % (org_ref[1], | |
|
198 | 'log --reverse --pretty="format: %%H" -s -p %s..%s' % (org_ref[1], | |
|
199 | 199 | other_ref[1]) |
|
200 | 200 | ) |
|
201 | 201 | ids = re.findall(r'[0-9a-fA-F]{40}', so) |
|
202 |
for cs in |
|
|
202 | for cs in (ids): | |
|
203 | 203 | changesets.append(org_repo.get_changeset(cs)) |
|
204 | 204 | |
|
205 | 205 | return changesets |
@@ -26,7 +26,7 b'' | |||
|
26 | 26 | <div class="table"> |
|
27 | 27 | <div id="body" class="diffblock"> |
|
28 | 28 | <div class="code-header cv"> |
|
29 | <h3 class="code-header-title">${_('Compare View')}</h3> | |
|
29 | <h3 class="code-header-title">${_('Compare View')} / ${h.link_to(_('Show combined compare'),h.url('compare_url',repo_name=c.repo_name,org_ref_type='rev',org_ref=getattr(c.cs_ranges[0].parents[0] if c.cs_ranges[0].parents else h.EmptyChangeset(),'raw_id'),other_ref_type='rev',other_ref=c.cs_ranges[-1].raw_id))}</h3> | |
|
30 | 30 | <div> |
|
31 | 31 | ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)} |
|
32 | 32 | </div> |
@@ -2,7 +2,7 b'' | |||
|
2 | 2 | <div class="container"> |
|
3 | 3 | <table class="compare_view_commits noborder"> |
|
4 | 4 | %if not c.cs_ranges: |
|
5 |
< |
|
|
5 | <span class="empty_data">${_('No changesets')}</span> | |
|
6 | 6 | %else: |
|
7 | 7 | %for cnt, cs in enumerate(c.cs_ranges): |
|
8 | 8 | <tr> |
@@ -34,12 +34,23 b'' | |||
|
34 | 34 | </div> |
|
35 | 35 | <div id="changeset_compare_view_content"> |
|
36 | 36 | ##CS |
|
37 |
<div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${ |
|
|
37 | <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}</div> | |
|
38 | 38 | <%include file="compare_cs.html" /> |
|
39 | 39 | |
|
40 | 40 | ## FILES |
|
41 |
<div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px"> |
|
|
41 | <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px"> | |
|
42 | ||
|
43 | % if c.limited_diff: | |
|
44 | ${ungettext('%s file changed', '%s files changed', len(c.files)) % len(c.files)} | |
|
45 | % else: | |
|
46 | ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.files)) % (len(c.files),c.lines_added,c.lines_deleted)}: | |
|
47 | %endif | |
|
48 | ||
|
49 | </div> | |
|
42 | 50 | <div class="cs_files"> |
|
51 | %if not c.files: | |
|
52 | <span class="empty_data">${_('No files')}</span> | |
|
53 | %endif | |
|
43 | 54 | %for fid, change, f, stat in c.files: |
|
44 | 55 | <div class="cs_${change}"> |
|
45 | 56 | <div class="node">${h.link_to(h.safe_unicode(f),h.url.current(anchor=fid))}</div> |
@@ -8,10 +8,10 b' from rhodecode.lib.vcs.backends.base imp' | |||
|
8 | 8 | |
|
9 | 9 | class TestCompareController(TestController): |
|
10 | 10 | |
|
11 |
def test_ |
|
|
11 | def test_compare_tag_hg(self): | |
|
12 | 12 | self.log_user() |
|
13 |
tag1 = '0.1. |
|
|
14 |
tag2 = '0.1. |
|
|
13 | tag1 = '0.1.2' | |
|
14 | tag2 = '0.1.3' | |
|
15 | 15 | response = self.app.get(url(controller='compare', action='index', |
|
16 | 16 | repo_name=HG_REPO, |
|
17 | 17 | org_ref_type="tag", |
@@ -21,13 +21,13 b' class TestCompareController(TestControll' | |||
|
21 | 21 | )) |
|
22 | 22 | response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, tag1, HG_REPO, tag2)) |
|
23 | 23 | ## outgoing changesets between tags |
|
24 |
response.mustcontain('''<a href="/%s/changeset/ |
|
|
25 |
response.mustcontain('''<a href="/%s/changeset/ |
|
|
26 |
response.mustcontain('''<a href="/%s/changeset/ |
|
|
24 | response.mustcontain('''<a href="/%s/changeset/c5ddebc06eaaba3010c2d66ea6ec9d074eb0f678">r112:c5ddebc06eaa</a>''' % HG_REPO) | |
|
25 | response.mustcontain('''<a href="/%s/changeset/70d4cef8a37657ee4cf5aabb3bd9f68879769816">r115:70d4cef8a376</a>''' % HG_REPO) | |
|
26 | response.mustcontain('''<a href="/%s/changeset/9749bfbfc0d2eba208d7947de266303b67c87cda">r116:9749bfbfc0d2</a>''' % HG_REPO) | |
|
27 | 27 | response.mustcontain('''<a href="/%s/changeset/41fda979f02fda216374bf8edac4e83f69e7581c">r117:41fda979f02f</a>''' % HG_REPO) |
|
28 |
response.mustcontain('''<a href="/%s/changeset/ |
|
|
29 |
response.mustcontain('''<a href="/%s/changeset/ |
|
|
30 |
response.mustcontain('''<a href="/%s/changeset/ |
|
|
28 | response.mustcontain('''<a href="/%s/changeset/bb1a3ab98cc45cb934a77dcabf87a5a598b59e97">r118:bb1a3ab98cc4</a>''' % HG_REPO) | |
|
29 | response.mustcontain('''<a href="/%s/changeset/36e0fc9d2808c5022a24f49d6658330383ed8666">r119:36e0fc9d2808</a>''' % HG_REPO) | |
|
30 | response.mustcontain('''<a href="/%s/changeset/17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">r120:17544fbfcd33</a>''' % HG_REPO) | |
|
31 | 31 | |
|
32 | 32 | ## files diff |
|
33 | 33 | response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--1c5cf9e91c12">docs/api/utils/index.rst</a></div>''' % (HG_REPO, tag1, tag2)) |
@@ -42,7 +42,43 b' class TestCompareController(TestControll' | |||
|
42 | 42 | response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--2ef0ef106c56">vcs/utils/diffs.py</a></div>''' % (HG_REPO, tag1, tag2)) |
|
43 | 43 | response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--3150cb87d4b7">vcs/utils/lazy.py</a></div>''' % (HG_REPO, tag1, tag2)) |
|
44 | 44 | |
|
45 |
def test_ |
|
|
45 | def test_compare_tag_git(self): | |
|
46 | self.log_user() | |
|
47 | tag1 = 'v0.1.2' | |
|
48 | tag2 = 'v0.1.3' | |
|
49 | response = self.app.get(url(controller='compare', action='index', | |
|
50 | repo_name=GIT_REPO, | |
|
51 | org_ref_type="tag", | |
|
52 | org_ref=tag1, | |
|
53 | other_ref_type="tag", | |
|
54 | other_ref=tag2, | |
|
55 | bundle=False | |
|
56 | )) | |
|
57 | response.mustcontain('%s@%s -> %s@%s' % (GIT_REPO, tag1, GIT_REPO, tag2)) | |
|
58 | ||
|
59 | ## outgoing changesets between tags | |
|
60 | response.mustcontain('''<a href="/%s/changeset/794bbdd31545c199f74912709ea350dedcd189a2">r113:794bbdd31545</a>''' % GIT_REPO) | |
|
61 | response.mustcontain('''<a href="/%s/changeset/e36d8c5025329bdd4212bd53d4ed8a70ff44985f">r115:e36d8c502532</a>''' % GIT_REPO) | |
|
62 | response.mustcontain('''<a href="/%s/changeset/5c9ff4f6d7508db0e72b1d2991c357d0d8e07af2">r116:5c9ff4f6d750</a>''' % GIT_REPO) | |
|
63 | response.mustcontain('''<a href="/%s/changeset/b7187fa2b8c1d773ec35e9dee12f01f74808c879">r117:b7187fa2b8c1</a>''' % GIT_REPO) | |
|
64 | response.mustcontain('''<a href="/%s/changeset/5f3b74262014a8de2dc7dade1152de9fd0c8efef">r118:5f3b74262014</a>''' % GIT_REPO) | |
|
65 | response.mustcontain('''<a href="/%s/changeset/17438a11f72b93f56d0e08e7d1fa79a378578a82">r119:17438a11f72b</a>''' % GIT_REPO) | |
|
66 | response.mustcontain('''<a href="/%s/changeset/5a3a8fb005554692b16e21dee62bf02667d8dc3e">r120:5a3a8fb00555</a>''' % GIT_REPO) | |
|
67 | ||
|
68 | #files | |
|
69 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--1c5cf9e91c12">docs/api/utils/index.rst</a>''' % (GIT_REPO, tag1, tag2)) | |
|
70 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--e3305437df55">test_and_report.sh</a>''' % (GIT_REPO, tag1, tag2)) | |
|
71 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--c8e92ef85cd1">.hgignore</a>''' % (GIT_REPO, tag1, tag2)) | |
|
72 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--6e08b694d687">.hgtags</a>''' % (GIT_REPO, tag1, tag2)) | |
|
73 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--2c14b00f3393">docs/api/index.rst</a>''' % (GIT_REPO, tag1, tag2)) | |
|
74 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--430ccbc82bdf">vcs/__init__.py</a>''' % (GIT_REPO, tag1, tag2)) | |
|
75 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>''' % (GIT_REPO, tag1, tag2)) | |
|
76 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--ebb592c595c0">vcs/utils/__init__.py</a>''' % (GIT_REPO, tag1, tag2)) | |
|
77 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--7abc741b5052">vcs/utils/annotate.py</a>''' % (GIT_REPO, tag1, tag2)) | |
|
78 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--2ef0ef106c56">vcs/utils/diffs.py</a>''' % (GIT_REPO, tag1, tag2)) | |
|
79 | response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--3150cb87d4b7">vcs/utils/lazy.py</a>''' % (GIT_REPO, tag1, tag2)) | |
|
80 | ||
|
81 | def test_index_branch_hg(self): | |
|
46 | 82 | self.log_user() |
|
47 | 83 | response = self.app.get(url(controller='compare', action='index', |
|
48 | 84 | repo_name=HG_REPO, |
@@ -54,12 +90,29 b' class TestCompareController(TestControll' | |||
|
54 | 90 | |
|
55 | 91 | response.mustcontain('%s@default -> %s@default' % (HG_REPO, HG_REPO)) |
|
56 | 92 | # branch are equal |
|
57 |
response.mustcontain('< |
|
|
93 | response.mustcontain('<span class="empty_data">No files</span>') | |
|
94 | response.mustcontain('<span class="empty_data">No changesets</span>') | |
|
95 | ||
|
96 | def test_index_branch_git(self): | |
|
97 | self.log_user() | |
|
98 | response = self.app.get(url(controller='compare', action='index', | |
|
99 | repo_name=GIT_REPO, | |
|
100 | org_ref_type="branch", | |
|
101 | org_ref='master', | |
|
102 | other_ref_type="branch", | |
|
103 | other_ref='master', | |
|
104 | )) | |
|
105 | ||
|
106 | response.mustcontain('%s@master -> %s@master' % (GIT_REPO, GIT_REPO)) | |
|
107 | # branch are equal | |
|
108 | response.mustcontain('<span class="empty_data">No files</span>') | |
|
109 | response.mustcontain('<span class="empty_data">No changesets</span>') | |
|
58 | 110 | |
|
59 | 111 | def test_compare_revisions(self): |
|
60 | 112 | self.log_user() |
|
61 |
rev1 = ' |
|
|
62 |
rev2 = ' |
|
|
113 | rev1 = 'b986218ba1c9' | |
|
114 | rev2 = '3d8f361e72ab' | |
|
115 | ||
|
63 | 116 | response = self.app.get(url(controller='compare', action='index', |
|
64 | 117 | repo_name=HG_REPO, |
|
65 | 118 | org_ref_type="rev", |
@@ -69,8 +122,7 b' class TestCompareController(TestControll' | |||
|
69 | 122 | )) |
|
70 | 123 | response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_REPO, rev2)) |
|
71 | 124 | ## outgoing changesets between those revisions |
|
72 |
response.mustcontain("""<a href="/%s/changeset/3d8f361e72ab303da48d799ff1ac40d5ac37c67e">r1:%s</a>""" % (HG_REPO, rev |
|
|
73 | ||
|
125 | response.mustcontain("""<a href="/%s/changeset/3d8f361e72ab303da48d799ff1ac40d5ac37c67e">r1:%s</a>""" % (HG_REPO, rev2)) | |
|
74 | 126 | ## files |
|
75 | 127 | response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--c8e92ef85cd1">.hgignore</a>""" % (HG_REPO, rev1, rev2)) |
|
76 | 128 | |
@@ -93,8 +145,54 b' class TestCompareController(TestControll' | |||
|
93 | 145 | |
|
94 | 146 | Session().commit() |
|
95 | 147 | |
|
96 |
rev1 = ' |
|
|
97 |
rev2 = ' |
|
|
148 | rev1 = '56349e29c2af' | |
|
149 | rev2 = '7d4bc8ec6be5' | |
|
150 | ||
|
151 | response = self.app.get(url(controller='compare', action='index', | |
|
152 | repo_name=HG_REPO, | |
|
153 | org_ref_type="rev", | |
|
154 | org_ref=rev1, | |
|
155 | other_ref_type="rev", | |
|
156 | other_ref=rev2, | |
|
157 | repo=HG_FORK, | |
|
158 | )) | |
|
159 | ||
|
160 | try: | |
|
161 | response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_FORK, rev2)) | |
|
162 | ## outgoing changesets between those revisions | |
|
163 | ||
|
164 | response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) | |
|
165 | response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) | |
|
166 | response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2)) | |
|
167 | ||
|
168 | ## files | |
|
169 | response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>""" % (HG_REPO, rev1, rev2)) | |
|
170 | response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--41b41c1f2796">vcs/backends/__init__.py</a>""" % (HG_REPO, rev1, rev2)) | |
|
171 | response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--2f574d260608">vcs/backends/base.py</a>""" % (HG_REPO, rev1, rev2)) | |
|
172 | finally: | |
|
173 | RepoModel().delete(HG_FORK) | |
|
174 | ||
|
175 | def test_compare_remote_repos_remote_flag_off(self): | |
|
176 | self.log_user() | |
|
177 | ||
|
178 | form_data = dict( | |
|
179 | repo_name=HG_FORK, | |
|
180 | repo_name_full=HG_FORK, | |
|
181 | repo_group=None, | |
|
182 | repo_type='hg', | |
|
183 | description='', | |
|
184 | private=False, | |
|
185 | copy_permissions=False, | |
|
186 | landing_rev='tip', | |
|
187 | update_after_clone=False, | |
|
188 | fork_parent_id=Repository.get_by_repo_name(HG_REPO), | |
|
189 | ) | |
|
190 | RepoModel().create_fork(form_data, cur_user=TEST_USER_ADMIN_LOGIN) | |
|
191 | ||
|
192 | Session().commit() | |
|
193 | ||
|
194 | rev1 = '56349e29c2af' | |
|
195 | rev2 = '7d4bc8ec6be5' | |
|
98 | 196 | |
|
99 | 197 | response = self.app.get(url(controller='compare', action='index', |
|
100 | 198 | repo_name=HG_REPO, |
@@ -102,16 +200,17 b' class TestCompareController(TestControll' | |||
|
102 | 200 | org_ref=rev1, |
|
103 | 201 | other_ref_type="rev", |
|
104 | 202 | other_ref=rev2, |
|
105 | repo=HG_FORK | |
|
203 | repo=HG_FORK, | |
|
204 | bundle=False, | |
|
106 | 205 | )) |
|
107 | 206 | |
|
108 | 207 | try: |
|
109 | 208 | response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_FORK, rev2)) |
|
110 | 209 | ## outgoing changesets between those revisions |
|
111 | 210 | |
|
112 |
response.mustcontain("""<a href="/%s/changeset/ |
|
|
211 | response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) | |
|
113 | 212 | response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) |
|
114 |
response.mustcontain("""<a href="/%s/changeset/ |
|
|
213 | response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2)) | |
|
115 | 214 | |
|
116 | 215 | ## files |
|
117 | 216 | response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>""" % (HG_REPO, rev1, rev2)) |
@@ -120,6 +219,67 b' class TestCompareController(TestControll' | |||
|
120 | 219 | finally: |
|
121 | 220 | RepoModel().delete(HG_FORK) |
|
122 | 221 | |
|
222 | # def test_compare_origin_ahead_of_fork(self): | |
|
223 | # self.log_user() | |
|
224 | # | |
|
225 | # form_data = dict( | |
|
226 | # repo_name=HG_FORK, | |
|
227 | # repo_name_full=HG_FORK, | |
|
228 | # repo_group=None, | |
|
229 | # repo_type='hg', | |
|
230 | # description='', | |
|
231 | # private=False, | |
|
232 | # copy_permissions=False, | |
|
233 | # landing_rev='tip', | |
|
234 | # update_after_clone=False, | |
|
235 | # fork_parent_id=Repository.get_by_repo_name(HG_REPO), | |
|
236 | # ) | |
|
237 | # RepoModel().create_fork(form_data, cur_user=TEST_USER_ADMIN_LOGIN) | |
|
238 | # | |
|
239 | # Session().commit() | |
|
240 | # | |
|
241 | # repo1 = Repository.get_by_repo_name(HG_REPO) | |
|
242 | # r1_name = HG_REPO | |
|
243 | # | |
|
244 | # #commit something ! | |
|
245 | # cs0 = ScmModel().create_node( | |
|
246 | # repo=repo1.scm_instance, repo_name=r1_name, | |
|
247 | # cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN, | |
|
248 | # author=TEST_USER_ADMIN_LOGIN, | |
|
249 | # message='extra commit1', | |
|
250 | # content='line1', | |
|
251 | # f_path='file1' | |
|
252 | # ) | |
|
253 | # | |
|
254 | # | |
|
255 | # rev1 = '56349e29c2af' | |
|
256 | # rev2 = '7d4bc8ec6be5' | |
|
257 | # | |
|
258 | # response = self.app.get(url(controller='compare', action='index', | |
|
259 | # repo_name=HG_REPO, | |
|
260 | # org_ref_type="rev", | |
|
261 | # org_ref=rev1, | |
|
262 | # other_ref_type="rev", | |
|
263 | # other_ref=rev2, | |
|
264 | # repo=HG_FORK, | |
|
265 | # bundle=False, | |
|
266 | # )) | |
|
267 | # | |
|
268 | # try: | |
|
269 | # response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_REPO, rev2)) | |
|
270 | # ## outgoing changesets between those revisions | |
|
271 | # | |
|
272 | # response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) | |
|
273 | # response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) | |
|
274 | # response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2)) | |
|
275 | # | |
|
276 | # ## files | |
|
277 | # response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>""" % (HG_REPO, rev1, rev2)) | |
|
278 | # response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--41b41c1f2796">vcs/backends/__init__.py</a>""" % (HG_REPO, rev1, rev2)) | |
|
279 | # response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--2f574d260608">vcs/backends/base.py</a>""" % (HG_REPO, rev1, rev2)) | |
|
280 | # finally: | |
|
281 | # RepoModel().delete(HG_FORK) | |
|
282 | ||
|
123 | 283 | def test_compare_extra_commits(self): |
|
124 | 284 | self.log_user() |
|
125 | 285 | |
@@ -178,7 +338,7 b' class TestCompareController(TestControll' | |||
|
178 | 338 | try: |
|
179 | 339 | response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) |
|
180 | 340 | |
|
181 | response.mustcontain("""<div class="message">commit2</div>""") | |
|
341 | response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""") | |
|
182 | 342 | response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (r2_name, cs1.raw_id, cs1.short_id)) |
|
183 | 343 | ## files |
|
184 | 344 | response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s#C--826e8142e6ba">file1</a>""" % (r2_name, rev1, rev2)) |
@@ -391,7 +551,7 b' class TestCompareController(TestControll' | |||
|
391 | 551 | repo=r1_name, |
|
392 | 552 | bundle=False |
|
393 | 553 | )) |
|
394 | rev2 = cs0.parents[0].raw_id | |
|
554 | ||
|
395 | 555 | response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) |
|
396 | 556 | response.mustcontain("""file1-line1-from-fork""") |
|
397 | 557 | response.mustcontain("""file2-line1-from-fork""") |
General Comments 0
You need to be logged in to leave comments.
Login now