diff --git a/kallithea/controllers/changeset.py b/kallithea/controllers/changeset.py --- a/kallithea/controllers/changeset.py +++ b/kallithea/controllers/changeset.py @@ -269,8 +269,6 @@ class ChangesetController(BaseRepoContro revision=changeset.raw_id) c.inline_comments.extend(inlines) - c.changes[changeset.raw_id] = [] - cs2 = changeset.raw_id cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id context_lcl = get_line_ctx('', request.GET) @@ -283,7 +281,7 @@ class ChangesetController(BaseRepoContro vcs=c.db_repo_scm_instance.alias, format='gitdiff', diff_limit=diff_limit) - cs_changes = OrderedDict() + file_diff_data = OrderedDict() if method == 'show': _parsed = diff_processor.prepare() c.limited_diff = False @@ -295,15 +293,15 @@ class ChangesetController(BaseRepoContro c.lines_deleted += st['deleted'] filename = f['filename'] fid = h.FID(changeset.raw_id, filename) + url_fid = h.FID('', filename) diff = diff_processor.as_html(enable_comments=enable_comments, parsed_lines=[f]) - cs_changes[fid] = [cs1, cs2, f['operation'], filename, - diff, st] + file_diff_data[fid] = (url_fid, f['operation'], filename, diff, st) else: # downloads/raw we only need RAW diff nothing else diff = diff_processor.as_raw() - cs_changes[''] = [None, None, None, None, diff, None] - c.changes[changeset.raw_id] = cs_changes + file_diff_data[''] = (None, None, None, diff, None) + c.changes[changeset.raw_id] = (cs1, cs2, file_diff_data) #sort comments in creation order c.comments = [com for com_id, com in sorted(comments.items())] diff --git a/kallithea/controllers/files.py b/kallithea/controllers/files.py --- a/kallithea/controllers/files.py +++ b/kallithea/controllers/files.py @@ -683,17 +683,13 @@ class FilesController(BaseRepoController ign_whitespace_lcl = get_ignore_ws(fid, request.GET) lim = request.GET.get('fulldiff') or self.cut_off_limit - cs1, cs2, op, diff, st = diffs.wrapped_diff(filenode_old=node1, + c.a_rev, c.cs_rev, op, diff, st = diffs.wrapped_diff(filenode_old=node1, filenode_new=node2, cut_off_limit=lim, ignore_whitespace=ign_whitespace_lcl, line_context=line_context_lcl, enable_comments=False) - filename = node1.path - cs_changes = { - 'fid': [cs1, cs2, op, filename, diff, st] - } - c.changes = cs_changes + c.file_diff_data = {fid: (fid, op, node1.path, diff, st)} return render('files/file_diff.html') diff --git a/kallithea/templates/changeset/changeset.html b/kallithea/templates/changeset/changeset.html --- a/kallithea/templates/changeset/changeset.html +++ b/kallithea/templates/changeset/changeset.html @@ -160,18 +160,19 @@ ${self.repo_context_bar('changelog', c.c
+ <% a_rev, cs_rev, file_diff_data = c.changes[c.changeset.raw_id] %> % if c.limited_diff: - ${ungettext('%s file changed', '%s files changed', len(c.changeset.affected_files)) % (len(c.changeset.affected_files))}: + ${ungettext('%s file changed', '%s files changed', len(file_diff_data)) % len(file_diff_data)}: % else: - ${ungettext('%s file changed with %s insertions and %s deletions', '%s files changed with %s insertions and %s deletions', len(c.changeset.affected_files)) % (len(c.changeset.affected_files), c.lines_added, c.lines_deleted)}: + ${ungettext('%s file changed with %s insertions and %s deletions', '%s files changed with %s insertions and %s deletions', len(file_diff_data)) % (len(file_diff_data), c.lines_added, c.lines_deleted)}: %endif
- %for fid, (cs1, cs2, op, path, diff, stats) in c.changes[c.changeset.raw_id].iteritems(): + %for fid, (url_fid, op, path, diff, stats) in file_diff_data.iteritems():
- ${h.safe_unicode(path)} + ${h.link_to(h.safe_unicode(path), '#%s' % fid)}
${h.fancy_file_stats(stats)}
@@ -188,7 +189,9 @@ ${self.repo_context_bar('changelog', c.c
<%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block_js()} - ${diff_block.diff_block(c.changes[c.changeset.raw_id])} + <% a_rev, cs_rev, file_diff_data = c.changes[c.changeset.raw_id] %> + ${diff_block.diff_block(c.repo_name, 'rev', a_rev, a_rev, + c.repo_name, 'rev', cs_rev, cs_rev, file_diff_data)} % if c.limited_diff:

${_('Changeset was too big and was cut off...')} ${_('Show full diff anyway')}

% endif diff --git a/kallithea/templates/changeset/changeset_range.html b/kallithea/templates/changeset/changeset_range.html --- a/kallithea/templates/changeset/changeset_range.html +++ b/kallithea/templates/changeset/changeset_range.html @@ -59,11 +59,12 @@ ${self.repo_context_bar('changelog')}
%for cs in c.cs_ranges:
${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))}
- %for FID, (cs1, cs2, op, path, diff, stats) in c.changes[cs.raw_id].iteritems(): + <% a_rev, cs_rev, file_diff_data = c.changes[cs.raw_id] %> + %for fid, (url_fid, op, path, diff, stats) in file_diff_data.iteritems():
- ${h.link_to(h.safe_unicode(path),h.url.current(anchor=FID))} + ${h.link_to(h.safe_unicode(path), '#%s' % fid)}
${h.fancy_file_stats(stats)}
@@ -105,7 +106,9 @@ ${self.repo_context_bar('changelog')}
- ${diff_block.diff_block(c.changes[cs.raw_id])} + <% a_rev, cs_rev, file_diff_data = c.changes[cs.raw_id] %> + ${diff_block.diff_block(c.repo_name, 'rev', a_rev, a_rev, + c.repo_name, 'rev', cs_rev, cs_rev, file_diff_data)} %endfor
diff --git a/kallithea/templates/changeset/diff_block.html b/kallithea/templates/changeset/diff_block.html --- a/kallithea/templates/changeset/diff_block.html +++ b/kallithea/templates/changeset/diff_block.html @@ -1,14 +1,16 @@ ## -*- coding: utf-8 -*- -<%def name="diff_block(change)"> +<%def name="diff_block(a_repo_name, a_ref_type, a_ref_name, a_rev, + cs_repo_name, cs_ref_name, cs_ref_type, cs_rev, + file_diff_data)">
- ↑ ${_('Collapse Diff')} ↑ + ↑ ${_('Collapse Diff')} ↑
-
-%for id_fid, (a_rev, cs_rev, op, filename, diff, stats) in change.iteritems(): - ${diff_block_diffblock(id_fid, h.FID(cs_rev, filename), op, filename, diff, - c.repo_name, a_rev, 'rev', a_rev, - c.repo_name, cs_rev, 'rev', cs_rev)} +
+%for id_fid, (url_fid, op, filename, diff, stats) in file_diff_data.iteritems(): + ${diff_block_diffblock(id_fid, url_fid, op, filename, diff, + a_repo_name, a_rev, a_ref_type, a_ref_name, + cs_repo_name, cs_rev, cs_ref_type, cs_ref_name)} %endfor
diff --git a/kallithea/templates/files/file_diff.html b/kallithea/templates/files/file_diff.html --- a/kallithea/templates/files/file_diff.html +++ b/kallithea/templates/files/file_diff.html @@ -23,7 +23,8 @@ ${self.repo_context_bar('changelog')} ## diff block <%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block_js()} - ${diff_block.diff_block(c.changes)} + ${diff_block.diff_block(c.repo_name, 'rev', c.a_rev, c.a_rev, + c.repo_name, 'rev', c.cs_rev, c.cs_rev, c.file_diff_data)}