7
7
<link rel="alternate" type="application/atom+xml" href="${branch.url('/atom')}" title="RSS feed for ${branch.friendly_name}" />
9
9
<span py:def="loglink(revid, text)">
10
<a title="Show history" href="${branch.url('/changes', **util.get_context(start_revid=revid))}" class="revlink"> ${text} </a>
10
<a title="Show history" href="${tg.url('/changes', start_revid=revid)}" class="revlink"> ${text} </a>
13
13
<span py:def="file_link(filename, file_id, revid)">
14
<a href="${branch.url([ '/annotate', revid ], **util.get_context(file_id=file_id))}" title="Annotate ${filename}">${filename}</a>
17
<span py:def="file_diff_link(revid, filename)">
18
<a href="javascript:diff_url('${branch.context_url([ '/revision', revid ]) + '#' + filename}')"
19
title="View diff for ${filename}">${filename}</a>
22
${use_collapse_buttons()}
14
<a href="${tg.url([ '/annotate', revid ], file_id=file_id)}" title="Annotate ${filename}">${filename}</a>
24
<script type="text/javascript"> <!--
25
function diff_url(url) {
26
if (document.cookie.indexOf('diff=unified') >= 0) {
27
this.location.href = url + "-u";
29
this.location.href = url + "-s";
17
<!-- this is totally matty's fault. i don't like javacsript. ;) -->
18
<script type="text/javascript"> // <!--
19
function displayDetails(name, hide, show) {
20
if (show == '') { show = 'inline'; }
21
var bhide = hide, ihide = hide;
22
if (hide == '') { bhide = 'block'; ihide = 'inline'; }
23
document.getElementById('details-' + name).style.display = bhide;
24
document.getElementById('hide-' + name).style.display = ihide;
25
document.getElementById('show-' + name).style.display = show;
27
function displayAll(hide, show) {
28
if (show == '') { show = 'inline'; }
29
var bhide = hide, ihide = hide;
30
if (hide == '') { bhide = 'block'; ihide = 'inline'; }
31
var nodes = document.getElementsByTagName('div');
32
for (var i = 0; i < nodes.length; i++) {
34
if ((id.length > 8) && (id.substring(0, 8) == 'details-')) {
35
nodes[i].style.display = bhide;
36
var revno = id.substring(8);
37
document.getElementById('hide-' + revno).style.display = ihide;
38
document.getElementById('show-' + revno).style.display = show;
41
document.getElementById('hide-all').style.display = ihide;
42
document.getElementById('show-all').style.display = show;
35
<body onload="javascript:sortCollapseElements();">
46
59
Sorry, no results found for your search.
49
<span py:if="not changes">
62
<span py:if="not search_failed">
63
<a class="hide-all" id="hide-all" href="javascript:displayAll('none', '')"> (hide all) </a>
64
<a class="hide-all" id="show-all" href="javascript:displayAll('', 'none')"> (show all) </a>
53
<span py:if="not search_failed" class="changelog"> ${collapse_all_button('cl')} </span>
55
<table class="log-entries">
56
<tr class="log-header">
57
<th class="revision-number">Rev</th>
59
<th class="summary">Summary</th>
60
<span py:strip="True" py:if="all_same_author">
63
<span py:strip="True" py:if="not all_same_author">
64
<th class="author">Committer</th>
66
<th class="date" colspan="2">Date</th>
67
<div class="log-entries">
68
68
<div py:for="entry in changes" class="revision">
69
69
<a name="entry-${entry.revno}" />
70
<tr class="revision-header parity${entry.parity}">
71
<td class="revision-number"> ${revision_link(entry.revid, util.trunc(entry.revno))} </td>
72
<td class="expand-button"> ${collapse_button('cl', entry.revno)} </td>
73
<td class="summary"> ${revision_link(entry.revid, entry.short_comment)} </td>
74
<span py:strip="True" py:if="all_same_author">
77
<span py:strip="True" py:if="not all_same_author">
78
<td class="author"> ${util.trunc(util.hide_email(entry.author), 20)} </td>
80
<td class="date"> ${util.format_date(entry.date)} (${util.ago(entry.date)}) </td>
81
<td class="inventory-link">
82
<a href="${branch.url([ '/files', entry.revid ])}"
83
title="Files at revision ${entry.revno}"> files</a>
70
<div class="revision-header">
73
<td class="revision-number"> ${revlink_q(entry.revid, start_revid, file_id, query, util.trunc(entry.revno))} </td>
74
<td class="expand-button">
75
<a href="javascript:displayDetails('${entry.revno}', 'none', '')" id="hide-${entry.revno}" class="show-button">
76
<img src="${tg.url('/static/images/nav-small-down.gif')}" width="10" height="10" />
78
<a href="javascript:displayDetails('${entry.revno}', '', 'none')" id="show-${entry.revno}" class="hide-button">
79
<img src="${tg.url('/static/images/nav-small-right.gif')}" witdh="10" height="10" />
82
<td class="summary"> ${revlink_q(entry.revid, start_revid, file_id, query, entry.short_comment)} </td>
83
<td class="inventory-link"> <a href="${tg.url([ '/files', entry.revid ])}">→ files</a> </td>
87
<tr class="revision-details-block parity${entry.parity}">
89
<td colspan="4"><table class="revision-details hidden-details collapse-cl-${entry.revno}-content">
90
<tr py:if="len(entry.merge_points) > 0">
91
<th class="children"> merged in: </th>
93
<span py:for="child in entry.merge_points">
94
${loglink(child.revid, '(' + child.revno + util.if_present(' %s', child.branch_nick) + ')')} <br />
98
<tr py:if="len(entry.parents) > 1">
99
<th class="parents"> merged from: </th>
101
<span py:for="parent in entry.parents[1:]">
102
${loglink(parent.revid, parent.revno + util.if_present(' (%s)', parent.branch_nick))} <br />
106
<span py:strip="True" py:if="all_same_author">
108
<th class="author">committed by:</th>
109
<td class="author"> ${util.hide_email(entry.author)} </td>
113
<th class="description">description:</th>
114
<td class="description"><span py:for="line in entry.comment_clean">${XML(line)} <br /></span> </td>
116
<tr py:if="entry.changes.added">
117
<th class="files"> files added: </th>
118
<td class="files"> <span py:for="filename, fid in entry.changes.added" class="filename">${file_link(filename, fid, entry.revid)} <br /></span> </td>
120
<tr py:if="entry.changes.removed">
121
<th class="files"> files removed: </th>
122
<td class="files"> <span py:for="filename, fid in entry.changes.removed" class="filename">${file_link(filename, fid, entry.revid)} <br /></span> </td>
124
<tr py:if="entry.changes.renamed">
125
<th class="files"> files renamed: </th>
126
<td class="files"> <span py:for="old_filename, new_filename, fid in entry.changes.renamed" class="filename">
127
${file_link(old_filename, fid, entry.revid)} => ${file_link(new_filename, fid, entry.revid)}<br />
130
<tr py:if="entry.changes.modified">
131
<th class="files"> files modified: </th>
132
<td class="files"> <span py:for="item in entry.changes.modified">
133
<span class="filename">${file_diff_link(entry.revid, item.filename)}</span>
88
<div class="revision-details-block">
89
<div class="revision-details">
92
<th class="author">committed by:</th>
93
<td class="author"> ${util.hide_email(entry.author)} </td>
96
<th class="date">date:</th>
97
<td class="date"> ${entry.date.strftime('%d %b %Y %H:%M')} (${util.ago(entry.date)}) </td>
101
<div class="revision-details hidden-details" id="details-${entry.revno}">
103
<tr py:if="len(entry.merge_points) > 0">
104
<th class="children"> merged in: </th>
105
<td class="children">
106
<span py:for="child in entry.merge_points">
107
${loglink(child.revid, '(' + child.revno + util.if_present(' %s', child.branch_nick) + ')')} <br />
111
<tr py:if="len(entry.parents) > 1">
112
<th class="parents"> merged from: </th>
114
<span py:for="parent in entry.parents"><span py:if="parent.revid != entry.parents[0].revid">
115
${loglink(parent.revid, '(' + parent.revno + util.if_present(' %s', parent.branch_nick) + ')')} <br />
120
<tr py:if="entry.changes.added">
121
<th class="files"> files added: </th>
122
<td class="files"> <span py:for="filename, fid in entry.changes.added" class="filename">${file_link(filename, fid, entry.revid)} <br /></span> </td>
124
<tr py:if="entry.changes.removed">
125
<th class="files"> files removed: </th>
126
<td class="files"> <span py:for="filename, fid in entry.changes.removed" class="filename">${file_link(filename, fid, entry.revid)} <br /></span> </td>
128
<tr py:if="entry.changes.renamed">
129
<th class="files"> files renamed: </th>
130
<td class="files"> <span py:for="old_filename, new_filename, fid in entry.changes.renamed" class="filename">
131
${file_link(old_filename, fid, entry.revid)} => ${file_link(new_filename, fid, entry.revid)}<br />
134
<tr py:if="entry.changes.modified">
135
<th class="files"> files modified: </th>
136
<td class="files"> <span py:for="item in entry.changes.modified">
137
<span class="filename">${file_link(item.filename, item.file_id, entry.revid)}</span>
138
<a href="${tg.url([ '/revision', entry.revid ], start_revid=start_revid, file_id=file_id, query=query) + '#' + item.filename}" class="jump">→ diff</a>
143
<th class="description">description:</th>
144
<td class="description"><span py:for="line in entry.comment_clean">${XML(line)} <br /></span> </td>
143
152
<div py:if="navigation.prev_page_revid or navigation.next_page_revid" class="bar">