%def name="diff_line_anchor(filename, line, type)"><%
return '%s_%s_%i' % (h.safeid(filename), type, line)
%>%def>
<%def name="action_class(action)">
<%
return {
'-': 'cb-deletion',
'+': 'cb-addition',
' ': 'cb-context',
}.get(action, 'cb-empty')
%>
%def>
<%def name="op_class(op_id)">
<%
return {
DEL_FILENODE: 'deletion', # file deleted
BIN_FILENODE: 'warning' # binary diff hidden
}.get(op_id, 'addition')
%>
%def>
<%def name="link_for(**kw)">
<%
new_args = request.GET.mixed()
new_args.update(kw)
return h.url('', **new_args)
%>
%def>
<%def name="render_diffset(diffset, commit=None,
# collapse all file diff entries when there are more than this amount of files in the diff
collapse_when_files_over=20,
# collapse lines in the diff when more than this amount of lines changed in the file diff
lines_changed_limit=500,
# add a ruler at to the output
ruler_at_chars=0,
# show inline comments
use_comments=False,
# disable new comments
disable_new_comments=False,
# special file-comments that were deleted in previous versions
# it's used for showing outdated comments for deleted files in a PR
deleted_files_comments=None
)">
%if use_comments:
%endif
<%
collapse_all = len(diffset.files) > collapse_when_files_over
%>
%if c.diffmode == 'sideside':
%endif
%if ruler_at_chars:
%endif
%def>
<%def name="diff_ops(filediff)">
<%
stats = filediff['patch']['stats']
from rhodecode.lib.diffs import NEW_FILENODE, DEL_FILENODE, \
MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE
%>
%if filediff.source_file_path and filediff.target_file_path:
%if filediff.source_file_path != filediff.target_file_path:
## file was renamed
${filediff.target_file_path} ⬅ ${filediff.source_file_path}
%else:
## file was modified
${filediff.source_file_path}
%endif
%else:
%if filediff.source_file_path:
## file was deleted
${filediff.source_file_path}
%else:
## file was added
${filediff.target_file_path}
%endif
%endif
%if filediff.patch['is_limited_diff']:
limited diff
%endif
%if RENAMED_FILENODE in stats['ops']:
renamed
%endif
%if NEW_FILENODE in stats['ops']:
created
%if filediff['target_mode'].startswith('120'):
symlink
%else:
${nice_mode(filediff['target_mode'])}
%endif
%endif
%if DEL_FILENODE in stats['ops']:
removed
%endif
%if CHMOD_FILENODE in stats['ops']:
${nice_mode(filediff['source_mode'])} ➡ ${nice_mode(filediff['target_mode'])}
%endif
¶
%if BIN_FILENODE in stats['ops']:
binary
%if MOD_FILENODE in stats['ops']:
modified
%endif
%endif
%if stats['added']:
+${stats['added']}
%endif
%if stats['deleted']:
-${stats['deleted']}
%endif
%def>
<%def name="nice_mode(filemode)">
${filemode.startswith('100') and filemode[3:] or filemode}
%def>
<%def name="diff_menu(filediff, use_comments=False)">
%def>
<%namespace name="commentblock" file="/changeset/changeset_file_comment.mako"/>
<%def name="inline_comments_container(comments)">
%def>
<%def name="render_hunk_lines_sideside(hunk, use_comments=False)">
%for i, line in enumerate(hunk.sideside):
<%
old_line_anchor, new_line_anchor = None, None
if line.original.lineno:
old_line_anchor = diff_line_anchor(hunk.filediff.source_file_path, line.original.lineno, 'o')
if line.modified.lineno:
new_line_anchor = diff_line_anchor(hunk.filediff.target_file_path, line.modified.lineno, 'n')
%>
%if line.original.comments:
%endif
|
%if line.original.lineno:
${line.original.lineno}
%endif
|
%if use_comments and line.original.lineno:
${render_add_comment_button()}
%endif
${line.original.action} ${line.original.content or '' | n}
%if use_comments and line.original.lineno and line.original.comments:
${inline_comments_container(line.original.comments)}
%endif
|
%if line.modified.comments:
%endif
|
%if line.modified.lineno:
${line.modified.lineno}
%endif
|
%if use_comments and line.modified.lineno:
${render_add_comment_button()}
%endif
${line.modified.action} ${line.modified.content or '' | n}
%if use_comments and line.modified.lineno and line.modified.comments:
${inline_comments_container(line.modified.comments)}
%endif
|
%endfor
%def>
<%def name="render_hunk_lines_unified(hunk, use_comments=False)">
%for old_line_no, new_line_no, action, content, comments in hunk.unified:
<%
old_line_anchor, new_line_anchor = None, None
if old_line_no:
old_line_anchor = diff_line_anchor(hunk.filediff.source_file_path, old_line_no, 'o')
if new_line_no:
new_line_anchor = diff_line_anchor(hunk.filediff.target_file_path, new_line_no, 'n')
%>
%if comments:
%endif
|
%if old_line_anchor:
${old_line_no}
%endif
|
%if new_line_anchor:
${new_line_no}
%endif
|
%if use_comments:
${render_add_comment_button()}
%endif
${action} ${content or '' | n}
%if use_comments and comments:
${inline_comments_container(comments)}
%endif
|
%endfor
%def>
<%def name="render_add_comment_button()">
%def>
<%def name="render_diffset_menu()">
%def>