# with
# set cset_href = href.changeset(new_rev, reponame) # set old_drev = display_rev(old_rev) # set new_drev = display_rev(new_rev) # set newpath ${new_path} # endset # set oldpath ${old_path} # endset # set newrev ${new_drev} # endset # set newrrev r${new_drev} # endset # set shortnewrev ${new_drev} # endset # set oldrrev r${old_drev} # endset # set logoldnew [${old_drev}:${new_drev}] # endset

# if reponame: # if changeset and restricted: # trans newrev, newpath, reponame Changeset ${newrev} in ${reponame} for ${newpath} # endtrans # elif not changeset and restricted: # trans newpath, logoldnew, reponame Changes in ${newpath} ${logoldnew} in ${reponame} # endtrans # elif not changeset and not restricted: # trans reponame, oldpath, oldrrev, newpath, newrrev Changes in ${reponame} from ${oldpath} at ${oldrev} to ${newpath} at ${newrev} # endtrans # else: # if annotated: # trans shortnewrev, reponame Changeset ${shortnewrev} in ${reponame} # endtrans # else: # trans new_drev, reponame Changeset ${new_drev} in ${reponame} # endtrans # endif # endif # else: # if changeset and restricted: # trans newrev, newpath=newpath Changeset ${newrev} for ${newpath} # endtrans # elif not changeset and restricted: # trans newpath, logoldnew Changes in ${newpath} ${logoldnew} # endtrans # elif not changeset and not restricted: # trans oldpath, oldrrev, newpath, newrrev Changes from ${oldpath} at ${oldrrev} to ${newpath} at ${newrrev} # endtrans # else: # if annotated: # trans shortnewrev Changeset ${shortnewrev} # endtrans # else: # trans new_drev Changeset ${new_drev} # endtrans # endif # endif # endif

# endwith # set o = diff.options # set optionset = o.ignoreblanklines or o.ignorecase or o.ignorewhitespace # if not req.is_xhr and (has_diffs or optionset):
# if not changeset: # endif # include 'diff_options.html'
# endif # macro node_change(idx, item, cl, kind) # set ndiffs = len(item.diffs) if item.diffs is not none else 0 # set nprops = len(item.props) # set is_removal = cl == 'rem' # set path = item.old.get('path') if is_removal else item.new.get('path') # set path = path and path[len(location):].strip('/') ## FIXME check path...
# if is_removal: ${path} # else: ${path or (location and '.') or _("(root)")} # endif (${kind}) # if item.old and item.old.get('path') and item.change in ('copy', 'move'): # set oldpath ${item.old.path} # endset # trans kind, oldpath (${kind} from ${oldpath}) # endtrans # endif # if 'hide_diff' in item: (${ _("view diffs")}) # elif ndiffs + nprops is greaterthan(0): (${ ngettext('%(num)d diff', '%(num)d diffs', ndiffs) if ndiffs }${ ', ' if ndiffs and nprops }${ ngettext('%(num)d prop', '%(num)d props', nprops) if nprops }) # endif # if cl == 'mod' and item.diffs is none: ( previous) # endif # endmacro
# if changeset:
${_("Timestamp:")}
# with delta = datetime.now(utc) - changeset.date ${format_datetime(changeset.date)} # if delta is lessthan(timedelta(0, 3600)): ${_("(less than one hour ago)")} # else: # trans age = dateinfo(changeset.date) (${age} ago) # endtrans # endif # endwith
${_("Author:")}
${authorinfo(changeset.author)}
# for prop in properties: # if prop.rendered:
${prop.rendered.name}
${prop.rendered.content}
# else:
${prop.name}:
${prop.value}
# endif # endfor
${_("Message:")}
# if not len(changeset.message.strip()):   # elif wiki_format_messages: ${wiki_to_html(context, changeset.message, escape_newlines=True)} # else:
${changeset.message}
# endif
# endif # if location:
${_("Location:")}
${ location}
# endif
${ngettext("File:", "Files:", num=len(files)) if files else _("(No files)")}
# if filestats:
# with f = filestats # set added, deleted, edited, copied, moved = ( f.add, f.delete, f.edit, f['copy'], f.move)
# if added:
${ngettext("%(num)d added", "%(num)d added", num=added)}
# endif # if deleted:
${ngettext("%(num)d deleted", "%(num)d deleted", num=deleted)}
# endif # if edited:
${ngettext("%(num)d edited", "%(num)d edited", num=edited)}
# endif # if copied:
${ngettext("%(num)d copied", "%(num)d copied", num=copied)}
# endif # if moved:
${ngettext("%(num)d moved", "%(num)d moved", num=moved)}
# endif
# endwith
# endif
    # for item in changes:
  • # if item.change == 'add': ${node_change(loop.index0, item, 'add', _("added"))} # elif item.change == 'delete': ${node_change(loop.index0, item, 'rem', _("deleted"))} # elif item.change == 'copy': ${node_change(loop.index0, item, 'cp', _("copied"))} # elif item.change == 'move': ${node_change(loop.index0, item, 'mv', _("moved"))} # elif item.change == 'edit': ${node_change(loop.index0, item, 'mod', _("modified"))} # else: ## ignored change (maybe because of diff options or ignored prop.) # endif
  • # endfor
# if has_diffs:

${_("Legend:")}

${_("Unmodified")}
${_("Added")}
${_("Removed")}
# if diff.style != 'inline':
${_("Modified")}
# endif
# endif # if show_diffs is sameas false: # if max_diff_bytes and diff_bytes is greaterthan(max_diff_bytes): # if 'WIKI_VIEW' not in perm(Resource('wiki', 'TracIni')): # set pretty_max_bytes = pretty_size(max_diff_bytes) # else: # set pretty_max_bytes ${pretty_size(max_diff_bytes)} # endset # endif # set pretty_diff_bytes = pretty_size(diff_bytes)

# trans pretty_diff_bytes, pretty_max_bytes Changeset view not shown, since the total size (${pretty_diff_bytes}) exceeds ${pretty_max_bytes} # endtrans

# endif # if max_diff_files and diff_files is greaterthan(max_diff_files): # if 'WIKI_VIEW' not in perm(Resource('wiki', 'TracIni')): # set pretty_max_files = max_diff_files # else: # set pretty_max_files ${max_diff_files} # endset # endif

# trans diff_files, pretty_max_files Changeset view not shown, since the number of files (${diff_files}) exceeds ${pretty_max_files} # endtrans

# endif # endif # with no_id = false # include 'diff_div.html' # endwith # if jmacros is defined: # call(note, page) jmacros.wikihelp('TracChangeset'): # trans note, page ${note} See ${page} for help on using the changeset viewer. # endtrans # endcall # endif