1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
3
py:extends="'master.kid'">
5
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
6
<title> ${branch_name} : revision ${change.revno} </title>
8
<span py:def="file_link(filename, file_id)">
9
<a href="${tg.url([ '/annotate', revid ], file_id=file_id)}" title="Annotate ${filename}">${filename}</a>
17
<h1> <span class="branch-name">${branch_name}</span> : revision ${change.revno}
19
<div> <b>→</b> <a href="${tg.url([ '/files', revid ])}">browse files</a> </div>
20
<div> <b>→</b> <a href="${tg.url('/changes', start_revid=revid)}">view branch changes</a> </div>
24
<div class="revision-info">
27
<th class="author">committed by:</th>
28
<td class="author"> ${util.hide_email(change.author)} </td>
31
<th class="date">date:</th>
32
<td class="date"> ${change.date.strftime('%d %b %Y %H:%M')} </td>
35
<tr py:if="len(change.merge_points) > 0">
36
<th class="children"> merged in: </th>
38
<span py:for="child in change.merge_points">
39
${revlink(child.revid, child.revid, None, '(' + child.revno + util.if_present(' %s', child.branch_nick) + ')')} <br />
43
<tr py:if="len(change.parents) > 1">
44
<th class="parents"> merged from: </th>
46
<span py:for="parent in change.parents"><span py:if="parent.revid != change.parents[0].revid">
47
${revlink(parent.revid, parent.revid, None, '(' + parent.revno + util.if_present(' %s', parent.branch_nick) + ')')} <br />
53
<th class="description">description:</th>
54
<td class="description"><span py:for="line in change.comment_clean">${XML(line)} <br /></span> </td>
57
<tr class="divider"> <th></th> <td></td> </tr>
59
<tr py:if="change.changes.added">
60
<th class="files"> files added: </th>
61
<td class="files"> <span py:for="filename, file_id in change.changes.added" class="filename">${file_link(filename, file_id)} <br /></span> </td>
63
<tr py:if="change.changes.removed">
64
<th class="files"> files removed: </th>
65
<td class="files"> <span py:for="filename, file_id in change.changes.removed" class="filename">${file_link(filename, file_id)} <br /></span> </td>
67
<tr py:if="change.changes.renamed">
68
<th class="files"> files renamed: </th>
69
<td class="files"> <span py:for="old_filename, new_filename, file_id in change.changes.renamed" class="filename">
70
${file_link(old_filename, file_id)} => ${file_link(new_filename, file_id)}<br />
73
<tr py:if="change.changes.modified">
74
<th class="files"> files modified: </th>
76
<span py:for="item in change.changes.modified">
77
<span class="filename">${file_link(item.filename, item.file_id)}</span> <a href="#${item.filename}" class="jump">→ diff</a><br />
84
<table class="diff-key" py:if="change.changes.modified"><tr>
85
<td> <div class="diff-key-block diff-insert"></div> <span class="label"> added </span> </td>
86
<td> <div class="diff-key-block diff-delete"></div> <span class="label"> removed </span> </td>
89
<div class="diff" py:if="change.changes.modified">
90
<table py:for="item in change.changes.modified" class="diff-block">
91
<tr><th class="filename"> <a href="${tg.url([ '/annotate', change.revid ], file_id=item.file_id)}" name="${item.filename}">${item.filename}</a> </th></tr>
93
<table py:for="chunk in item.chunks" class="diff-chunk">
94
<tr> <th class="lineno">old</th> <th class="lineno">new</th> <th></th> </tr>
95
<tr py:for="line in chunk.diff">
96
<td class="lineno">${line.old_lineno}</td>
97
<td class="lineno">${line.new_lineno}</td>
98
<td class="diff-${line.type} text">${XML(line.line)}</td>
105
<div py:if="navigation.prev_page_revid or navigation.next_page_revid" class="bar">
109
<a py:if="navigation.prev_page_revid" href="${navigation.prev_page_url}"> < revision ${history.get_revno(navigation.prev_page_revid)} </a>
111
<td class="rbuttons" align="right">
112
<a py:if="navigation.next_page_revid" href="${navigation.next_page_url}"> revision ${history.get_revno(navigation.next_page_revid)} > </a>