##// END OF EJS Templates
hgweb: show each obsfateentry on its own line...
av6 -
r36340:f3fd4fe0 default
parent child Browse files
Show More
@@ -1,61 +1,61
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url|urlescape}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url|urlescape}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a>
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a>
12 <a href="/">Mercurial</a> {pathdef%breadcrumb} / changeset
12 <a href="/">Mercurial</a> {pathdef%breadcrumb} / changeset
13 </div>
13 </div>
14
14
15 <div class="page_nav">
15 <div class="page_nav">
16 <div>
16 <div>
17 <a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a> |
17 <a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a> |
18 <a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a> |
18 <a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a> |
19 <a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a> |
19 <a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a> |
20 <a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a> |
20 <a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a> |
21 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a> |
21 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a> |
22 <a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
22 <a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
23 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a> |
23 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a> |
24 <a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a> |
24 <a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a> |
25 changeset |
25 changeset |
26 <a href="{url|urlescape}raw-rev/{symrev}">raw</a> {archives%archiveentry} |
26 <a href="{url|urlescape}raw-rev/{symrev}">raw</a> {archives%archiveentry} |
27 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
27 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
28 </div>
28 </div>
29 {searchform}
29 {searchform}
30 </div>
30 </div>
31
31
32 <div>
32 <div>
33 <a class="title" href="{url|urlescape}raw-rev/{node|short}">
33 <a class="title" href="{url|urlescape}raw-rev/{node|short}">
34 {desc|strip|escape|firstline|nonempty}
34 {desc|strip|escape|firstline|nonempty}
35 {alltags}
35 {alltags}
36 </a>
36 </a>
37 </div>
37 </div>
38 <div class="title_text">
38 <div class="title_text">
39 <table cellspacing="0">
39 <table cellspacing="0">
40 <tr><td>author</td><td>{author|obfuscate}</td></tr>
40 <tr><td>author</td><td>{author|obfuscate}</td></tr>
41 <tr><td></td><td class="date age">{date|rfc822date}</td></tr>
41 <tr><td></td><td class="date age">{date|rfc822date}</td></tr>
42 {branch%changesetbranch}
42 {branch%changesetbranch}
43 <tr>
43 <tr>
44 <td>changeset {rev}</td>
44 <td>changeset {rev}</td>
45 <td style="font-family:monospace"><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
45 <td style="font-family:monospace"><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
46 </tr>
46 </tr>
47 {if(obsolete, '<tr><td>obsolete</td><td>{succsandmarkers%obsfateentry}</td></tr>')}
47 {if(obsolete, succsandmarkers%obsfateentry)}
48 {ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}
48 {ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}
49 {child%changesetchild}
49 {child%changesetchild}
50 </table></div>
50 </table></div>
51
51
52 <div class="page_body description">{desc|strip|escape|websub|nonempty}</div>
52 <div class="page_body description">{desc|strip|escape|websub|nonempty}</div>
53 <div class="list_head"></div>
53 <div class="list_head"></div>
54 <div class="title_text">
54 <div class="title_text">
55 <table cellspacing="0">
55 <table cellspacing="0">
56 {files}
56 {files}
57 </table></div>
57 </table></div>
58
58
59 <div class="page_body diffblocks">{diff}</div>
59 <div class="page_body diffblocks">{diff}</div>
60
60
61 {footer}
61 {footer}
@@ -1,363 +1,367
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {if(basename, '{basename|escape}', '{topic|escape}')}
17 {if(basename, '{basename|escape}', '{topic|escape}')}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td class="link">
32 <td class="link">
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td class="link">
44 <td class="link">
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td style="font-family:monospace">drwxr-xr-x</td>
65 <td style="font-family:monospace">drwxr-xr-x</td>
66 <td style="font-family:monospace"></td>
66 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td class="link">
72 <td class="link">
73 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
73 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
74 </td>
74 </td>
75 </tr>'
75 </tr>'
76 fileentry = '
76 fileentry = '
77 <tr class="parity{parity}">
77 <tr class="parity{parity}">
78 <td style="font-family:monospace">{permissions|permissions}</td>
78 <td style="font-family:monospace">{permissions|permissions}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
81 <td class="list">
81 <td class="list">
82 <a class="list" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
82 <a class="list" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
83 </td>
83 </td>
84 <td class="link">
84 <td class="link">
85 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
85 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
86 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
86 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
87 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
87 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
88 </td>
88 </td>
89 </tr>'
89 </tr>'
90 filerevision = filerevision.tmpl
90 filerevision = filerevision.tmpl
91 fileannotate = fileannotate.tmpl
91 fileannotate = fileannotate.tmpl
92 filediff = filediff.tmpl
92 filediff = filediff.tmpl
93 filecomparison = filecomparison.tmpl
93 filecomparison = filecomparison.tmpl
94 filelog = filelog.tmpl
94 filelog = filelog.tmpl
95 fileline = '
95 fileline = '
96 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
96 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
97 annotateline = '
97 annotateline = '
98 <tr id="{lineid}" style="font-family:monospace" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
98 <tr id="{lineid}" style="font-family:monospace" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
99 <td class="annotate linenr parity{blockparity}" style="text-align: right;">
99 <td class="annotate linenr parity{blockparity}" style="text-align: right;">
100 {if(blockhead,
100 {if(blockhead,
101 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
101 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
102 {rev}
102 {rev}
103 </a>')}
103 </a>')}
104 <div class="annotate-info">
104 <div class="annotate-info">
105 <div>
105 <div>
106 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
106 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
107 {node|short}</a>
107 {node|short}</a>
108 {desc|escape|firstline}
108 {desc|escape|firstline}
109 </div>
109 </div>
110 <div><em>{author|obfuscate}</em></div>
110 <div><em>{author|obfuscate}</em></div>
111 <div>parents: {parents%annotateparent}</div>
111 <div>parents: {parents%annotateparent}</div>
112 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
112 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
113 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
113 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
114 </div>
114 </div>
115 </td>
115 </td>
116 <td class="followlines-btn-parent"><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
116 <td class="followlines-btn-parent"><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
117 <td><pre>{line|escape}</pre></td>
117 <td><pre>{line|escape}</pre></td>
118 </tr>'
118 </tr>'
119 annotateparent = '
119 annotateparent = '
120 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
120 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
121 difflineplus = '
121 difflineplus = '
122 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
122 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
123 difflineminus = '
123 difflineminus = '
124 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
124 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
125 difflineat = '
125 difflineat = '
126 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
126 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
127 diffline = '
127 diffline = '
128 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
128 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
129
129
130 comparisonblock ='
130 comparisonblock ='
131 <tbody class="block">
131 <tbody class="block">
132 {lines}
132 {lines}
133 </tbody>'
133 </tbody>'
134 comparisonline = '
134 comparisonline = '
135 <tr id="{lineid}" style="font-family:monospace">
135 <tr id="{lineid}" style="font-family:monospace">
136 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
136 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
137 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
137 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
138 </tr>'
138 </tr>'
139
139
140 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
140 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
141 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
141 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
142 changesetparent = '
142 changesetparent = '
143 <tr>
143 <tr>
144 <td>parent {rev}</td>
144 <td>parent {rev}</td>
145 <td style="font-family:monospace">
145 <td style="font-family:monospace">
146 {changesetlink}
146 {changesetlink}
147 </td>
147 </td>
148 </tr>'
148 </tr>'
149 changesetparentdiff = '
149 changesetparentdiff = '
150 <tr>
150 <tr>
151 <td>parent {rev}</td>
151 <td>parent {rev}</td>
152 <td style="font-family:monospace">
152 <td style="font-family:monospace">
153 {changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}
153 {changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}
154 </td>
154 </td>
155 </tr>'
155 </tr>'
156 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
156 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
157 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
157 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
158 filerevparent = '
158 filerevparent = '
159 <tr>
159 <tr>
160 <td>parent {rev}</td>
160 <td>parent {rev}</td>
161 <td style="font-family:monospace">
161 <td style="font-family:monospace">
162 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
162 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
163 {rename%filerename}{node|short}
163 {rename%filerename}{node|short}
164 </a>
164 </a>
165 </td>
165 </td>
166 </tr>'
166 </tr>'
167 filerename = '{file|escape}@'
167 filerename = '{file|escape}@'
168 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
168 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
169 fileannotateparent = '
169 fileannotateparent = '
170 <tr>
170 <tr>
171 <td>parent {rev}</td>
171 <td>parent {rev}</td>
172 <td style="font-family:monospace">
172 <td style="font-family:monospace">
173 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
173 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
174 {rename%filerename}{node|short}
174 {rename%filerename}{node|short}
175 </a>
175 </a>
176 </td>
176 </td>
177 </tr>'
177 </tr>'
178 changesetchild = '
178 changesetchild = '
179 <tr>
179 <tr>
180 <td>child {rev}</td>
180 <td>child {rev}</td>
181 <td style="font-family:monospace">
181 <td style="font-family:monospace">
182 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
182 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
183 </td>
183 </td>
184 </tr>'
184 </tr>'
185 filerevchild = '
185 filerevchild = '
186 <tr>
186 <tr>
187 <td>child {rev}</td>
187 <td>child {rev}</td>
188 <td style="font-family:monospace">
188 <td style="font-family:monospace">
189 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
189 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
190 </tr>'
190 </tr>'
191 fileannotatechild = '
191 fileannotatechild = '
192 <tr>
192 <tr>
193 <td>child {rev}</td>
193 <td>child {rev}</td>
194 <td style="font-family:monospace">
194 <td style="font-family:monospace">
195 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
195 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
196 </tr>'
196 </tr>'
197 tags = tags.tmpl
197 tags = tags.tmpl
198 tagentry = '
198 tagentry = '
199 <tr class="parity{parity}">
199 <tr class="parity{parity}">
200 <td class="age"><i class="age">{date|rfc822date}</i></td>
200 <td class="age"><i class="age">{date|rfc822date}</i></td>
201 <td><a class="list" href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
201 <td><a class="list" href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
202 <td class="link">
202 <td class="link">
203 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
203 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
204 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
204 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
205 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
205 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
206 </td>
206 </td>
207 </tr>'
207 </tr>'
208 bookmarks = bookmarks.tmpl
208 bookmarks = bookmarks.tmpl
209 bookmarkentry = '
209 bookmarkentry = '
210 <tr class="parity{parity}">
210 <tr class="parity{parity}">
211 <td class="age"><i class="age">{date|rfc822date}</i></td>
211 <td class="age"><i class="age">{date|rfc822date}</i></td>
212 <td><a class="list" href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
212 <td><a class="list" href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
213 <td class="link">
213 <td class="link">
214 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
214 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
215 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
215 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
216 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
216 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
217 </td>
217 </td>
218 </tr>'
218 </tr>'
219 branches = branches.tmpl
219 branches = branches.tmpl
220 branchentry = '
220 branchentry = '
221 <tr class="parity{parity}">
221 <tr class="parity{parity}">
222 <td class="age"><i class="age">{date|rfc822date}</i></td>
222 <td class="age"><i class="age">{date|rfc822date}</i></td>
223 <td class="{status}"><a class="list" href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}"><b>{branch|escape}</b></a></td>
223 <td class="{status}"><a class="list" href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}"><b>{branch|escape}</b></a></td>
224 <td class="link">
224 <td class="link">
225 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
225 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
226 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
226 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
227 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
227 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
228 </td>
228 </td>
229 </tr>'
229 </tr>'
230 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
230 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
231 filediffparent = '
231 filediffparent = '
232 <tr>
232 <tr>
233 <td>parent {rev}</td>
233 <td>parent {rev}</td>
234 <td style="font-family:monospace">
234 <td style="font-family:monospace">
235 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
235 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
236 {node|short}
236 {node|short}
237 </a>
237 </a>
238 </td>
238 </td>
239 </tr>'
239 </tr>'
240 filecompparent = '
240 filecompparent = '
241 <tr>
241 <tr>
242 <td>parent {rev}</td>
242 <td>parent {rev}</td>
243 <td style="font-family:monospace">
243 <td style="font-family:monospace">
244 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
244 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
245 {node|short}
245 {node|short}
246 </a>
246 </a>
247 </td>
247 </td>
248 </tr>'
248 </tr>'
249 filediffchild = '
249 filediffchild = '
250 <tr>
250 <tr>
251 <td>child {rev}</td>
251 <td>child {rev}</td>
252 <td style="font-family:monospace">
252 <td style="font-family:monospace">
253 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
253 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
254 </td>
254 </td>
255 </tr>'
255 </tr>'
256 filecompchild = '
256 filecompchild = '
257 <tr>
257 <tr>
258 <td>child {rev}</td>
258 <td>child {rev}</td>
259 <td style="font-family:monospace">
259 <td style="font-family:monospace">
260 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
260 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
261 </td>
261 </td>
262 </tr>'
262 </tr>'
263 shortlog = shortlog.tmpl
263 shortlog = shortlog.tmpl
264 graph = graph.tmpl
264 graph = graph.tmpl
265 graphentry = graphentry.tmpl
265 graphentry = graphentry.tmpl
266 phasetag = '{ifeq(phase, 'public', '', '<span class="phasetag" title="{phase|escape}">{phase|escape}</span> ')}'
266 phasetag = '{ifeq(phase, 'public', '', '<span class="phasetag" title="{phase|escape}">{phase|escape}</span> ')}'
267 obsoletetag = '{if(obsolete, '<span class="obsoletetag" title="obsolete">obsolete</span> ')}'
267 obsoletetag = '{if(obsolete, '<span class="obsoletetag" title="obsolete">obsolete</span> ')}'
268 instabilitytag = '<span class="instabilitytag" title="{instability|escape}">{instability|escape}</span> '
268 instabilitytag = '<span class="instabilitytag" title="{instability|escape}">{instability|escape}</span> '
269 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
269 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
270 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
270 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
271 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
271 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
272 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
272 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
273 alltags = '<span class="logtags">{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>'
273 alltags = '<span class="logtags">{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>'
274 successorlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
274 successorlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
275 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
275 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
276 obsfateverb = '{obsfateverb(successors, markers)}'
276 obsfateverb = '{obsfateverb(successors, markers)}'
277 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
277 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
278 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
278 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
279 obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
279 obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
280 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}'
280 obsfateentry = '
281 <tr>
282 <td>obsolete</td>
283 <td>{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}</td>
284 </tr>'
281 shortlogentry = '
285 shortlogentry = '
282 <tr class="parity{parity}">
286 <tr class="parity{parity}">
283 <td class="age"><i class="age">{date|rfc822date}</i></td>
287 <td class="age"><i class="age">{date|rfc822date}</i></td>
284 <td><i>{author|person}</i></td>
288 <td><i>{author|person}</i></td>
285 <td>
289 <td>
286 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
290 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
287 <b>{desc|strip|firstline|escape|nonempty}</b>
291 <b>{desc|strip|firstline|escape|nonempty}</b>
288 {alltags}
292 {alltags}
289 </a>
293 </a>
290 </td>
294 </td>
291 <td class="link" nowrap>
295 <td class="link" nowrap>
292 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
296 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
293 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
297 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
294 </td>
298 </td>
295 </tr>'
299 </tr>'
296 filelogentry = '
300 filelogentry = '
297 <tr class="parity{if(patch, '1', '{parity}')}">
301 <tr class="parity{if(patch, '1', '{parity}')}">
298 <td class="age"><i class="age">{date|rfc822date}</i></td>
302 <td class="age"><i class="age">{date|rfc822date}</i></td>
299 <td><i>{author|person}</i></td>
303 <td><i>{author|person}</i></td>
300 <td>
304 <td>
301 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
305 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
302 <b>{desc|strip|firstline|escape|nonempty}</b>
306 <b>{desc|strip|firstline|escape|nonempty}</b>
303 {alltags}
307 {alltags}
304 </a>
308 </a>
305 </td>
309 </td>
306 <td class="link">
310 <td class="link">
307 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
311 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
308 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
312 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
309 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
313 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
310 {rename%filelogrename}
314 {rename%filelogrename}
311 </td>
315 </td>
312 </tr>
316 </tr>
313 {if(patch, '<tr><td colspan="4">{diff}</td></tr>')}'
317 {if(patch, '<tr><td colspan="4">{diff}</td></tr>')}'
314 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
318 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
315 indexentry = '
319 indexentry = '
316 <tr class="parity{parity}">
320 <tr class="parity{parity}">
317 <td>
321 <td>
318 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
322 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
319 <b>{name|escape}</b>
323 <b>{name|escape}</b>
320 </a>
324 </a>
321 </td>
325 </td>
322 <td>{description}</td>
326 <td>{description}</td>
323 <td>{contact|obfuscate}</td>
327 <td>{contact|obfuscate}</td>
324 <td class="age">{lastchange|rfc822date}</td>
328 <td class="age">{lastchange|rfc822date}</td>
325 <td class="indexlinks">{archives%indexarchiveentry}</td>
329 <td class="indexlinks">{archives%indexarchiveentry}</td>
326 <td>{if(isdirectory, '',
330 <td>{if(isdirectory, '',
327 '<div class="rss_logo">
331 '<div class="rss_logo">
328 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
332 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
329 </div>'
333 </div>'
330 )}
334 )}
331 </td>
335 </td>
332 </tr>\n'
336 </tr>\n'
333 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
337 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
334 index = index.tmpl
338 index = index.tmpl
335 urlparameter = '{separator}{name}={value|urlescape}'
339 urlparameter = '{separator}{name}={value|urlescape}'
336 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
340 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
337 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
341 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
338
342
339 searchform = '
343 searchform = '
340 <div class="search">
344 <div class="search">
341 <form id="searchform" action="{url|urlescape}log">
345 <form id="searchform" action="{url|urlescape}log">
342 {sessionvars%hiddenformentry}
346 {sessionvars%hiddenformentry}
343 <input name="rev" type="text" value="{query|escape}" size="40" />
347 <input name="rev" type="text" value="{query|escape}" size="40" />
344 <div id="hint">{searchhint}</div>
348 <div id="hint">{searchhint}</div>
345 </form>
349 </form>
346 </div>'
350 </div>'
347 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
351 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
348 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
352 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
349
353
350 diffoptsform = '
354 diffoptsform = '
351 <form id="diffopts-form"
355 <form id="diffopts-form"
352 data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
356 data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
353 data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
357 data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
354 data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
358 data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
355 data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
359 data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
356 <span>Ignore whitespace changes - </span>
360 <span>Ignore whitespace changes - </span>
357 <span>Everywhere:</span>
361 <span>Everywhere:</span>
358 <input id="ignorews-checkbox" type="checkbox" />
362 <input id="ignorews-checkbox" type="checkbox" />
359 <span>Within whitespace:</span>
363 <span>Within whitespace:</span>
360 <input id="ignorewsamount-checkbox" type="checkbox" />
364 <input id="ignorewsamount-checkbox" type="checkbox" />
361 <span>At end of lines:</span>
365 <span>At end of lines:</span>
362 <input id="ignorewseol-checkbox" type="checkbox" />
366 <input id="ignorewseol-checkbox" type="checkbox" />
363 </form>'
367 </form>'
@@ -1,66 +1,66
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url|urlescape}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url|urlescape}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb} / changeset</h1>
10 <h1 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb} / changeset</h1>
11
11
12 {searchform}
12 {searchform}
13
13
14 <ul class="page-nav">
14 <ul class="page-nav">
15 <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
15 <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
16 <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
16 <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
17 <li><a href="{url|urlescape}changelog{sessionvars%urlparameter}">changelog</a></li>
17 <li><a href="{url|urlescape}changelog{sessionvars%urlparameter}">changelog</a></li>
18 <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
18 <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
19 <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
19 <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
20 <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
20 <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
21 <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
21 <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
22 <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a></li>
22 <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a></li>
23 <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
23 <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
24 </ul>
24 </ul>
25 </div>
25 </div>
26
26
27 <ul class="submenu">
27 <ul class="submenu">
28 <li class="current">changeset</li>
28 <li class="current">changeset</li>
29 <li><a href="{url|urlescape}raw-rev/{symrev}">raw</a></li>
29 <li><a href="{url|urlescape}raw-rev/{symrev}">raw</a></li>
30 {archives%archiveentry}
30 {archives%archiveentry}
31 </ul>
31 </ul>
32
32
33 <h2 class="no-link no-border">changeset</h2>
33 <h2 class="no-link no-border">changeset</h2>
34
34
35 <h3 class="changeset">
35 <h3 class="changeset">
36 <a href="{url|urlescape}raw-rev/{node|short}">
36 <a href="{url|urlescape}raw-rev/{node|short}">
37 {desc|strip|escape|firstline|nonempty}
37 {desc|strip|escape|firstline|nonempty}
38 {alltags}
38 {alltags}
39 </a>
39 </a>
40 </h3>
40 </h3>
41 <p class="changeset-age"><span class="age">{date|rfc822date}</span></p>
41 <p class="changeset-age"><span class="age">{date|rfc822date}</span></p>
42
42
43 <dl class="overview">
43 <dl class="overview">
44 <dt>author</dt>
44 <dt>author</dt>
45 <dd>{author|obfuscate}</dd>
45 <dd>{author|obfuscate}</dd>
46 <dt>date</dt>
46 <dt>date</dt>
47 <dd class="date age">{date|rfc822date}</dd>
47 <dd class="date age">{date|rfc822date}</dd>
48 {branch%changesetbranch}
48 {branch%changesetbranch}
49 <dt>changeset {rev}</dt>
49 <dt>changeset {rev}</dt>
50 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
50 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
51 {if(obsolete, '<dt>obsolete</dt><dd>{succsandmarkers%obsfateentry}</dd>')}
51 {if(obsolete, succsandmarkers%obsfateentry)}
52 {ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}
52 {ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}
53 {child%changesetchild}
53 {child%changesetchild}
54 </dl>
54 </dl>
55
55
56 <p class="description">{desc|strip|escape|websub|addbreaks|nonempty}</p>
56 <p class="description">{desc|strip|escape|websub|addbreaks|nonempty}</p>
57
57
58 <table>
58 <table>
59 {files}
59 {files}
60 </table>
60 </table>
61
61
62 <div class="diff diffblocks">
62 <div class="diff diffblocks">
63 {diff}
63 {diff}
64 </div>
64 </div>
65
65
66 {footer}
66 {footer}
@@ -1,302 +1,304
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {if(basename, '{basename|escape}', '{topic|escape}')}
17 {if(basename, '{basename|escape}', '{topic|escape}')}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td>
32 <td>
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td>
44 <td>
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td>drwxr-xr-x</td>
65 <td>drwxr-xr-x</td>
66 <td></td>
66 <td></td>
67 <td></td>
67 <td></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
72 <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
73 </tr>'
73 </tr>'
74 fileentry = '
74 fileentry = '
75 <tr class="parity{parity}">
75 <tr class="parity{parity}">
76 <td>{permissions|permissions}</td>
76 <td>{permissions|permissions}</td>
77 <td>{date|isodate}</td>
77 <td>{date|isodate}</td>
78 <td>{size}</td>
78 <td>{size}</td>
79 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
79 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
80 <td>
80 <td>
81 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
81 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
82 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
82 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
83 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
83 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
84 </td>
84 </td>
85 </tr>'
85 </tr>'
86 filerevision = filerevision.tmpl
86 filerevision = filerevision.tmpl
87 fileannotate = fileannotate.tmpl
87 fileannotate = fileannotate.tmpl
88 filediff = filediff.tmpl
88 filediff = filediff.tmpl
89 filecomparison = filecomparison.tmpl
89 filecomparison = filecomparison.tmpl
90 filelog = filelog.tmpl
90 filelog = filelog.tmpl
91 fileline = '
91 fileline = '
92 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
92 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
93 annotateline = '
93 annotateline = '
94 <tr id="{lineid}" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
94 <tr id="{lineid}" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
95 <td class="annotate linenr parity{blockparity}">
95 <td class="annotate linenr parity{blockparity}">
96 {if(blockhead,
96 {if(blockhead,
97 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
97 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
98 {rev}
98 {rev}
99 </a>')}
99 </a>')}
100 <div class="annotate-info">
100 <div class="annotate-info">
101 <div>
101 <div>
102 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
102 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
103 {node|short}</a>
103 {node|short}</a>
104 {desc|escape|firstline}
104 {desc|escape|firstline}
105 </div>
105 </div>
106 <div><em>{author|obfuscate}</em></div>
106 <div><em>{author|obfuscate}</em></div>
107 <div>parents: {parents%annotateparent}</div>
107 <div>parents: {parents%annotateparent}</div>
108 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
108 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
109 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
109 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
110 </div>
110 </div>
111 </td>
111 </td>
112 <td class="lineno">
112 <td class="lineno">
113 <a href="#{lineid}">{linenumber}</a>
113 <a href="#{lineid}">{linenumber}</a>
114 </td>
114 </td>
115 <td class="source">{line|escape}</td>
115 <td class="source">{line|escape}</td>
116 </tr>'
116 </tr>'
117 annotateparent = '
117 annotateparent = '
118 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
118 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
119 difflineplus = '
119 difflineplus = '
120 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
120 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
121 difflineminus = '
121 difflineminus = '
122 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
122 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
123 difflineat = '
123 difflineat = '
124 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
124 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
125 diffline = '
125 diffline = '
126 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
126 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
127
127
128 comparisonblock ='
128 comparisonblock ='
129 <tbody class="block">
129 <tbody class="block">
130 {lines}
130 {lines}
131 </tbody>'
131 </tbody>'
132 comparisonline = '
132 comparisonline = '
133 <tr id="{lineid}">
133 <tr id="{lineid}">
134 <td class="source {type}"><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
134 <td class="source {type}"><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
135 <td class="source {type}"><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
135 <td class="source {type}"><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
136 </tr>'
136 </tr>'
137
137
138 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
138 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
139 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
139 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
140 changesetparent = '
140 changesetparent = '
141 <dt>parent {rev}</dt>
141 <dt>parent {rev}</dt>
142 <dd>{changesetlink}</dd>'
142 <dd>{changesetlink}</dd>'
143 changesetparentdiff = '
143 changesetparentdiff = '
144 <dt>parent {rev}</dt>
144 <dt>parent {rev}</dt>
145 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</dd>'
145 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</dd>'
146 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
146 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
147 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
147 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
148 filerevparent = '
148 filerevparent = '
149 <dt>parent {rev}</dt>
149 <dt>parent {rev}</dt>
150 <dd>
150 <dd>
151 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
151 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
152 {rename%filerename}{node|short}
152 {rename%filerename}{node|short}
153 </a>
153 </a>
154 </dd>'
154 </dd>'
155 filerename = '{file|escape}@'
155 filerename = '{file|escape}@'
156 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
156 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
157 fileannotateparent = '
157 fileannotateparent = '
158 <dt>parent {rev}</dt>
158 <dt>parent {rev}</dt>
159 <dd>
159 <dd>
160 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
160 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
161 {rename%filerename}{node|short}
161 {rename%filerename}{node|short}
162 </a>
162 </a>
163 </dd>'
163 </dd>'
164 changesetchild = '
164 changesetchild = '
165 <dt>child {rev}</dt>
165 <dt>child {rev}</dt>
166 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
166 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
167 filerevchild = '
167 filerevchild = '
168 <dt>child {rev}</dt>
168 <dt>child {rev}</dt>
169 <dd>
169 <dd>
170 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
170 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
171 </dd>'
171 </dd>'
172 fileannotatechild = '
172 fileannotatechild = '
173 <dt>child {rev}</dt>
173 <dt>child {rev}</dt>
174 <dd>
174 <dd>
175 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
175 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
176 </dd>'
176 </dd>'
177 tags = tags.tmpl
177 tags = tags.tmpl
178 tagentry = '
178 tagentry = '
179 <tr class="parity{parity}">
179 <tr class="parity{parity}">
180 <td class="nowrap age">{date|rfc822date}</td>
180 <td class="nowrap age">{date|rfc822date}</td>
181 <td><a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">{tag|escape}</a></td>
181 <td><a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">{tag|escape}</a></td>
182 <td class="nowrap">
182 <td class="nowrap">
183 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
183 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
184 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
184 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
185 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
185 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
186 </td>
186 </td>
187 </tr>'
187 </tr>'
188 bookmarks = bookmarks.tmpl
188 bookmarks = bookmarks.tmpl
189 bookmarkentry = '
189 bookmarkentry = '
190 <tr class="parity{parity}">
190 <tr class="parity{parity}">
191 <td class="nowrap age">{date|rfc822date}</td>
191 <td class="nowrap age">{date|rfc822date}</td>
192 <td><a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
192 <td><a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
193 <td class="nowrap">
193 <td class="nowrap">
194 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
194 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
195 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
195 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
196 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
196 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
197 </td>
197 </td>
198 </tr>'
198 </tr>'
199 branches = branches.tmpl
199 branches = branches.tmpl
200 branchentry = '
200 branchentry = '
201 <tr class="parity{parity}">
201 <tr class="parity{parity}">
202 <td class="nowrap age">{date|rfc822date}</td>
202 <td class="nowrap age">{date|rfc822date}</td>
203 <td class="{status}"><a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}">{branch|escape}</a></td>
203 <td class="{status}"><a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}">{branch|escape}</a></td>
204 <td class="nowrap">
204 <td class="nowrap">
205 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
205 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
206 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
206 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
207 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
207 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
208 </td>
208 </td>
209 </tr>'
209 </tr>'
210 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
210 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
211 filediffparent = '
211 filediffparent = '
212 <dt>parent {rev}</dt>
212 <dt>parent {rev}</dt>
213 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
213 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
214 filecompparent = '
214 filecompparent = '
215 <dt>parent {rev}</dt>
215 <dt>parent {rev}</dt>
216 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
216 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
217 filediffchild = '
217 filediffchild = '
218 <dt>child {rev}</dt>
218 <dt>child {rev}</dt>
219 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
219 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
220 filecompchild = '
220 filecompchild = '
221 <dt>child {rev}</dt>
221 <dt>child {rev}</dt>
222 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
222 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
223 shortlog = shortlog.tmpl
223 shortlog = shortlog.tmpl
224 phasetag = '{ifeq(phase, 'public', '', '<span class="phasetag" title="{phase|escape}">{phase|escape}</span> ')}'
224 phasetag = '{ifeq(phase, 'public', '', '<span class="phasetag" title="{phase|escape}">{phase|escape}</span> ')}'
225 obsoletetag = '{if(obsolete, '<span class="obsoletetag" title="obsolete">obsolete</span> ')}'
225 obsoletetag = '{if(obsolete, '<span class="obsoletetag" title="obsolete">obsolete</span> ')}'
226 instabilitytag = '<span class="instabilitytag" title="{instability|escape}">{instability|escape}</span> '
226 instabilitytag = '<span class="instabilitytag" title="{instability|escape}">{instability|escape}</span> '
227 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
227 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
228 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
228 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
229 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
229 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
230 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
230 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
231 alltags = '<span class="logtags">{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>'
231 alltags = '<span class="logtags">{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>'
232 successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
232 successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
233 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
233 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
234 obsfateverb = '{obsfateverb(successors, markers)}'
234 obsfateverb = '{obsfateverb(successors, markers)}'
235 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
235 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
236 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
236 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
237 obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
237 obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
238 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}'
238 obsfateentry = '
239 <dt>obsolete</dt>
240 <dd>{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}</dd>'
239 shortlogentry = '
241 shortlogentry = '
240 <tr class="parity{parity}">
242 <tr class="parity{parity}">
241 <td class="nowrap age">{date|rfc822date}</td>
243 <td class="nowrap age">{date|rfc822date}</td>
242 <td>{author|person}</td>
244 <td>{author|person}</td>
243 <td>
245 <td>
244 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
246 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
245 {desc|strip|firstline|escape|nonempty}
247 {desc|strip|firstline|escape|nonempty}
246 {alltags}
248 {alltags}
247 </a>
249 </a>
248 </td>
250 </td>
249 <td class="nowrap">
251 <td class="nowrap">
250 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
252 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
251 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
253 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
252 </td>
254 </td>
253 </tr>'
255 </tr>'
254 filelogentry = '
256 filelogentry = '
255 <tr class="parity{parity}">
257 <tr class="parity{parity}">
256 <td class="nowrap age">{date|rfc822date}</td>
258 <td class="nowrap age">{date|rfc822date}</td>
257 <td>{author|person}</td>
259 <td>{author|person}</td>
258 <td>
260 <td>
259 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
261 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
260 {desc|strip|firstline|escape|nonempty}
262 {desc|strip|firstline|escape|nonempty}
261 {alltags}
263 {alltags}
262 </a>
264 </a>
263 </td>
265 </td>
264 <td class="nowrap">
266 <td class="nowrap">
265 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
267 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
266 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
268 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
267 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
269 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
268 {rename%filelogrename}
270 {rename%filelogrename}
269 </td>
271 </td>
270 </tr>'
272 </tr>'
271 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
273 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
272 indexentry = '
274 indexentry = '
273 <tr class="parity{parity}">
275 <tr class="parity{parity}">
274 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
276 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
275 <td>{description}</td>
277 <td>{description}</td>
276 <td>{contact|obfuscate}</td>
278 <td>{contact|obfuscate}</td>
277 <td class="age">{lastchange|rfc822date}</td>
279 <td class="age">{lastchange|rfc822date}</td>
278 <td class="indexlinks">{archives%indexarchiveentry}</td>
280 <td class="indexlinks">{archives%indexarchiveentry}</td>
279 <td>
281 <td>
280 {if(isdirectory, '',
282 {if(isdirectory, '',
281 '<div class="rss_logo">
283 '<div class="rss_logo">
282 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
284 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
283 </div>'
285 </div>'
284 )}
286 )}
285 </td>
287 </td>
286 </tr>\n'
288 </tr>\n'
287 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
289 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
288 index = index.tmpl
290 index = index.tmpl
289 urlparameter = '{separator}{name}={value|urlescape}'
291 urlparameter = '{separator}{name}={value|urlescape}'
290 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
292 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
291 graph = graph.tmpl
293 graph = graph.tmpl
292 graphentry = graphentry.tmpl
294 graphentry = graphentry.tmpl
293 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
295 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
294
296
295 searchform = '
297 searchform = '
296 <form action="{url|urlescape}log">
298 <form action="{url|urlescape}log">
297 {sessionvars%hiddenformentry}
299 {sessionvars%hiddenformentry}
298 <dl class="search">
300 <dl class="search">
299 <dt><label>Search: </label></dt>
301 <dt><label>Search: </label></dt>
300 <dd><input type="text" name="rev" value="{query|escape}" /></dd>
302 <dd><input type="text" name="rev" value="{query|escape}" /></dd>
301 </dl>
303 </dl>
302 </form>'
304 </form>'
@@ -1,91 +1,91
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short}</title>
2 <title>{repo|escape}: {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5 <div class="container">
5 <div class="container">
6 <div class="menu">
6 <div class="menu">
7 <div class="logo">
7 <div class="logo">
8 <a href="{logourl}">
8 <a href="{logourl}">
9 <img src="{staticurl|urlescape}{logoimg}" alt="mercurial" /></a>
9 <img src="{staticurl|urlescape}{logoimg}" alt="mercurial" /></a>
10 </div>
10 </div>
11 <ul>
11 <ul>
12 <li><a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">log</a></li>
12 <li><a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
13 <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
14 <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
15 <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li class="active">changeset</li>
19 <li class="active">changeset</li>
20 <li><a href="{url|urlescape}raw-rev/{symrev}{sessionvars%urlparameter}">raw</a></li>
20 <li><a href="{url|urlescape}raw-rev/{symrev}{sessionvars%urlparameter}">raw</a></li>
21 <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">browse</a></li>
21 <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">browse</a></li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 {archives%archiveentry}
24 {archives%archiveentry}
25 </ul>
25 </ul>
26 <ul>
26 <ul>
27 <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
27 <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
28 </ul>
29 </div>
29 </div>
30
30
31 <div class="main">
31 <div class="main">
32
32
33 <h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
33 <h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
34 <h3>
34 <h3>
35 changeset {rev}:<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
35 changeset {rev}:<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
36 {alltags}
36 {alltags}
37 </h3>
37 </h3>
38
38
39 {searchform}
39 {searchform}
40
40
41 <div class="description">{desc|strip|escape|websub|nonempty}</div>
41 <div class="description">{desc|strip|escape|websub|nonempty}</div>
42
42
43 <table id="changesetEntry">
43 <table id="changesetEntry">
44 <tr>
44 <tr>
45 <th class="author">author</th>
45 <th class="author">author</th>
46 <td class="author">{author|obfuscate}</td>
46 <td class="author">{author|obfuscate}</td>
47 </tr>
47 </tr>
48 <tr>
48 <tr>
49 <th class="date">date</th>
49 <th class="date">date</th>
50 <td class="date age">{date|rfc822date}</td>
50 <td class="date age">{date|rfc822date}</td>
51 </tr>
51 </tr>
52 {if(obsolete, '<tr>
52 {if(obsolete, '<tr>
53 <th>obsolete</th>
53 <th>obsolete</th>
54 <td>{succsandmarkers%obsfateentry}</td>
54 <td>{join(succsandmarkers%obsfateentry, '<br>\n')}</td>
55 </tr>')}
55 </tr>')}
56 <tr>
56 <tr>
57 <th class="author">parents</th>
57 <th class="author">parents</th>
58 <td class="author">{ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}</td>
58 <td class="author">{ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}</td>
59 </tr>
59 </tr>
60 <tr>
60 <tr>
61 <th class="author">children</th>
61 <th class="author">children</th>
62 <td class="author">{child%changesetchild}</td>
62 <td class="author">{child%changesetchild}</td>
63 </tr>
63 </tr>
64 <tr>
64 <tr>
65 <th class="files">files</th>
65 <th class="files">files</th>
66 <td class="files">{files}</td>
66 <td class="files">{files}</td>
67 </tr>
67 </tr>
68 <tr>
68 <tr>
69 <th class="diffstat">diffstat</th>
69 <th class="diffstat">diffstat</th>
70 <td class="diffstat">
70 <td class="diffstat">
71 {diffsummary}
71 {diffsummary}
72 <a id="diffstatexpand" href="javascript:toggleDiffstat()">[<tt>+</tt>]</a>
72 <a id="diffstatexpand" href="javascript:toggleDiffstat()">[<tt>+</tt>]</a>
73 <div id="diffstatdetails" style="display:none;">
73 <div id="diffstatdetails" style="display:none;">
74 <a href="javascript:toggleDiffstat()">[<tt>-</tt>]</a>
74 <a href="javascript:toggleDiffstat()">[<tt>-</tt>]</a>
75 <table class="diffstat-table stripes2">{diffstat}</table>
75 <table class="diffstat-table stripes2">{diffstat}</table>
76 </div>
76 </div>
77 </td>
77 </td>
78 </tr>
78 </tr>
79 </table>
79 </table>
80
80
81 <div class="overflow">
81 <div class="overflow">
82 <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="javascript:toggleLinewrap()">on</a></div>
82 <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="javascript:toggleLinewrap()">on</a></div>
83 <div class="sourcefirst"> line diff</div>
83 <div class="sourcefirst"> line diff</div>
84 <div class="stripes2 diffblocks">
84 <div class="stripes2 diffblocks">
85 {diff}
85 {diff}
86 </div>
86 </div>
87 </div>
87 </div>
88
88
89 </div>
89 </div>
90 </div>
90 </div>
91 {footer}
91 {footer}
@@ -1,37 +1,34
1 <table class="logEntry parity{parity}">
1 <table class="logEntry parity{parity}">
2 <tr>
2 <tr>
3 <th class="label"><span class="age">{date|rfc822date}</span>:</th>
3 <th class="label"><span class="age">{date|rfc822date}</span>:</th>
4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
5 </tr>
5 </tr>
6 <tr>
6 <tr>
7 <th class="revision">changeset {rev}:</th>
7 <th class="revision">changeset {rev}:</th>
8 <td class="node"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
8 <td class="node"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
9 </tr>
9 </tr>
10 {parent%changelogparent}
10 {parent%changelogparent}
11 {child%changelogchild}
11 {child%changelogchild}
12 {changelogtag}
12 {changelogtag}
13 <tr>
13 <tr>
14 <th class="author">author:</th>
14 <th class="author">author:</th>
15 <td class="author">{author|obfuscate}</td>
15 <td class="author">{author|obfuscate}</td>
16 </tr>
16 </tr>
17 <tr>
17 <tr>
18 <th class="date">date:</th>
18 <th class="date">date:</th>
19 <td class="date">{date|rfc822date}</td>
19 <td class="date">{date|rfc822date}</td>
20 </tr>
20 </tr>
21 {ifeq(phase, 'public', '', '<tr>
21 {ifeq(phase, 'public', '', '<tr>
22 <th class="phase">phase:</th>
22 <th class="phase">phase:</th>
23 <td class="phase">{phase|escape}</td>
23 <td class="phase">{phase|escape}</td>
24 </tr>')}
24 </tr>')}
25 {if(obsolete, '<tr>
25 {if(obsolete, succsandmarkers%obsfateentry)}
26 <th class="obsolete">obsolete:</th>
27 <td class="obsolete">{succsandmarkers%obsfateentry}</td>
28 </tr>')}
29 {ifeq(count(instabilities), '0', '', '<tr>
26 {ifeq(count(instabilities), '0', '', '<tr>
30 <th class="instabilities">instabilities:</th>
27 <th class="instabilities">instabilities:</th>
31 <td class="instabilities">{instabilities%"{instability} "|escape}</td>
28 <td class="instabilities">{instabilities%"{instability} "|escape}</td>
32 </tr>')}
29 </tr>')}
33 <tr>
30 <tr>
34 <th class="files"><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
31 <th class="files"><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
35 <td class="files">{files}</td>
32 <td class="files">{files}</td>
36 </tr>
33 </tr>
37 </table>
34 </table>
@@ -1,64 +1,61
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {node|short}</title>
2 <title>{repo|escape}: changeset {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a>
9 <a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a>
10 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a>
12 <a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a>
13 <a href="{url|urlescape}raw-rev/{symrev}">raw</a>
13 <a href="{url|urlescape}raw-rev/{symrev}">raw</a>
14 {archives%archiveentry}
14 {archives%archiveentry}
15 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
15 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
16 </div>
16 </div>
17
17
18 <h2><a href="/">Mercurial</a> {pathdef%breadcrumb} / changeset: {desc|strip|escape|firstline|nonempty}</h2>
18 <h2><a href="/">Mercurial</a> {pathdef%breadcrumb} / changeset: {desc|strip|escape|firstline|nonempty}</h2>
19
19
20 <table id="changesetEntry">
20 <table id="changesetEntry">
21 <tr>
21 <tr>
22 <th class="changeset">changeset {rev}:</th>
22 <th class="changeset">changeset {rev}:</th>
23 <td class="changeset"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
23 <td class="changeset"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
24 </tr>
24 </tr>
25 {ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}
25 {ifeq(count(parent), '2', parent%changesetparentdiff, parent%changesetparent)}
26 {child%changesetchild}
26 {child%changesetchild}
27 {changesettag}
27 {changesettag}
28 <tr>
28 <tr>
29 <th class="author">author:</th>
29 <th class="author">author:</th>
30 <td class="author">{author|obfuscate}</td>
30 <td class="author">{author|obfuscate}</td>
31 </tr>
31 </tr>
32 <tr>
32 <tr>
33 <th class="date">date:</th>
33 <th class="date">date:</th>
34 <td class="date age">{date|rfc822date}</td>
34 <td class="date age">{date|rfc822date}</td>
35 </tr>
35 </tr>
36 {ifeq(phase, 'public', '', '<tr>
36 {ifeq(phase, 'public', '', '<tr>
37 <th class="phase">phase:</th>
37 <th class="phase">phase:</th>
38 <td class="phase">{phase|escape}</td>
38 <td class="phase">{phase|escape}</td>
39 </tr>')}
39 </tr>')}
40 {if(obsolete, '<tr>
40 {if(obsolete, succsandmarkers%obsfateentry)}
41 <th class="obsolete">obsolete:</th>
42 <td class="obsolete">{succsandmarkers%obsfateentry}</td>
43 </tr>')}
44 {ifeq(count(instabilities), '0', '', '<tr>
41 {ifeq(count(instabilities), '0', '', '<tr>
45 <th class="instabilities">instabilities:</th>
42 <th class="instabilities">instabilities:</th>
46 <td class="instabilities">{instabilities%"{instability} "|escape}</td>
43 <td class="instabilities">{instabilities%"{instability} "|escape}</td>
47 </tr>')}
44 </tr>')}
48 <tr>
45 <tr>
49 <th class="files">files:</th>
46 <th class="files">files:</th>
50 <td class="files">{files}</td>
47 <td class="files">{files}</td>
51 </tr>
48 </tr>
52 <tr>
49 <tr>
53 <th class="description">description:</th>
50 <th class="description">description:</th>
54 <td class="description">{desc|strip|escape|websub|addbreaks|nonempty}</td>
51 <td class="description">{desc|strip|escape|websub|addbreaks|nonempty}</td>
55 </tr>
52 </tr>
56 </table>
53 </table>
57
54
58 <div id="changesetDiff">
55 <div id="changesetDiff">
59 {diff}
56 {diff}
60 </div>
57 </div>
61
58
62 {footer}
59 {footer}
63
60
64
61
@@ -1,204 +1,208
1 default = 'shortlog'
1 default = 'shortlog'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 shortlog = shortlog.tmpl
7 shortlog = shortlog.tmpl
8 shortlogentry = shortlogentry.tmpl
8 shortlogentry = shortlogentry.tmpl
9 graph = graph.tmpl
9 graph = graph.tmpl
10 graphentry = graphentry.tmpl
10 graphentry = graphentry.tmpl
11 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
13 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
13 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
14 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
14 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
15 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
16 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
16 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
17 filenolink = '{file|escape} '
17 filenolink = '{file|escape} '
18 fileellipses = '...'
18 fileellipses = '...'
19 changelogentry = changelogentry.tmpl
19 changelogentry = changelogentry.tmpl
20 searchentry = changelogentry.tmpl
20 searchentry = changelogentry.tmpl
21 changeset = changeset.tmpl
21 changeset = changeset.tmpl
22 manifest = manifest.tmpl
22 manifest = manifest.tmpl
23
23
24 nav = '{before%naventry} {after%naventry}'
24 nav = '{before%naventry} {after%naventry}'
25 navshort = '{before%navshortentry}{after%navshortentry}'
25 navshort = '{before%navshortentry}{after%navshortentry}'
26 navgraph = '{before%navgraphentry}{after%navgraphentry}'
26 navgraph = '{before%navgraphentry}{after%navgraphentry}'
27 filenav = '{before%filenaventry}{after%filenaventry}'
27 filenav = '{before%filenaventry}{after%filenaventry}'
28
28
29 direntry = '
29 direntry = '
30 <tr class="parity{parity}">
30 <tr class="parity{parity}">
31 <td><tt>drwxr-xr-x</tt>&nbsp;
31 <td><tt>drwxr-xr-x</tt>&nbsp;
32 <td>&nbsp;
32 <td>&nbsp;
33 <td>&nbsp;
33 <td>&nbsp;
34 <td>
34 <td>
35 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
35 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
36 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
36 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
37 {emptydirs|urlescape}
37 {emptydirs|urlescape}
38 </a>'
38 </a>'
39
39
40 fileentry = '
40 fileentry = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><tt>{permissions|permissions}</tt>&nbsp;
42 <td><tt>{permissions|permissions}</tt>&nbsp;
43 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
43 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
44 <td align=right><tt>{size}</tt>&nbsp;
44 <td align=right><tt>{size}</tt>&nbsp;
45 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
45 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
46
46
47 filerevision = filerevision.tmpl
47 filerevision = filerevision.tmpl
48 fileannotate = fileannotate.tmpl
48 fileannotate = fileannotate.tmpl
49 filediff = filediff.tmpl
49 filediff = filediff.tmpl
50 filelog = filelog.tmpl
50 filelog = filelog.tmpl
51 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
51 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
52 filelogentry = filelogentry.tmpl
52 filelogentry = filelogentry.tmpl
53
53
54 # The &nbsp; ensures that all table cells have content (even if there
54 # The &nbsp; ensures that all table cells have content (even if there
55 # is an empty line in the annotated file), which in turn ensures that
55 # is an empty line in the annotated file), which in turn ensures that
56 # all table rows have equal height.
56 # all table rows have equal height.
57 annotateline = '
57 annotateline = '
58 <tr class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
58 <tr class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
59 <td class="annotate parity{blockparity}">
59 <td class="annotate parity{blockparity}">
60 {if(blockhead,
60 {if(blockhead,
61 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
61 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
62 {rev}
62 {rev}
63 </a>')}
63 </a>')}
64 <div class="annotate-info">
64 <div class="annotate-info">
65 <div>
65 <div>
66 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
66 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
67 {node|short}</a>
67 {node|short}</a>
68 {desc|escape|firstline}
68 {desc|escape|firstline}
69 </div>
69 </div>
70 <div><em>{author|obfuscate}</em></div>
70 <div><em>{author|obfuscate}</em></div>
71 <div>parents: {parents%annotateparent}</div>
71 <div>parents: {parents%annotateparent}</div>
72 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
72 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
73 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
73 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
74 </div>
74 </div>
75 </td>
75 </td>
76 <td>
76 <td>
77 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
77 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
78 </td>
78 </td>
79 <td><pre>&nbsp;{line|escape}</pre></td>
79 <td><pre>&nbsp;{line|escape}</pre></td>
80 </tr>'
80 </tr>'
81 annotateparent = '
81 annotateparent = '
82 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
82 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
83 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
83 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
84 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
84 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
85 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
85 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
86 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
86 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
87 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
87 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
88 changelogparent = '
88 changelogparent = '
89 <tr>
89 <tr>
90 <th class="parent">parent {rev}:</th>
90 <th class="parent">parent {rev}:</th>
91 <td class="parent">
91 <td class="parent">
92 {changesetlink}
92 {changesetlink}
93 </td>
93 </td>
94 </tr>'
94 </tr>'
95 changesetparent = '
95 changesetparent = '
96 <tr>
96 <tr>
97 <th class="parent">parent {rev}:</th>
97 <th class="parent">parent {rev}:</th>
98 <td class="parent">{changesetlink}</td>
98 <td class="parent">{changesetlink}</td>
99 </tr>'
99 </tr>'
100 changesetparentdiff = '
100 changesetparentdiff = '
101 <tr>
101 <tr>
102 <th class="parent">parent {rev}:</th>
102 <th class="parent">parent {rev}:</th>
103 <td class="parent">{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</td>
103 <td class="parent">{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</td>
104 </tr>'
104 </tr>'
105 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
105 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
106 filerevparent = '
106 filerevparent = '
107 <tr>
107 <tr>
108 <td class="metatag">parent:</td>
108 <td class="metatag">parent:</td>
109 <td>
109 <td>
110 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
110 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
111 {rename%filerename}{node|short}
111 {rename%filerename}{node|short}
112 </a>
112 </a>
113 </td>
113 </td>
114 </tr>'
114 </tr>'
115 filerename = '{file|escape}@'
115 filerename = '{file|escape}@'
116 filelogrename = '
116 filelogrename = '
117 <tr>
117 <tr>
118 <th>base:</th>
118 <th>base:</th>
119 <td>
119 <td>
120 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
120 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
121 {file|escape}@{node|short}
121 {file|escape}@{node|short}
122 </a>
122 </a>
123 </td>
123 </td>
124 </tr>'
124 </tr>'
125 fileannotateparent = '
125 fileannotateparent = '
126 <tr>
126 <tr>
127 <td class="metatag">parent:</td>
127 <td class="metatag">parent:</td>
128 <td>
128 <td>
129 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
129 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
130 {rename%filerename}{node|short}
130 {rename%filerename}{node|short}
131 </a>
131 </a>
132 </td>
132 </td>
133 </tr>'
133 </tr>'
134 changesetchild = '
134 changesetchild = '
135 <tr>
135 <tr>
136 <th class="child">child {rev}:</th>
136 <th class="child">child {rev}:</th>
137 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
137 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
138 </tr>'
138 </tr>'
139 changelogchild = '
139 changelogchild = '
140 <tr>
140 <tr>
141 <th class="child">child {rev}:</th>
141 <th class="child">child {rev}:</th>
142 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
142 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
143 </tr>'
143 </tr>'
144 filerevchild = '
144 filerevchild = '
145 <tr>
145 <tr>
146 <td class="metatag">child:</td>
146 <td class="metatag">child:</td>
147 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
147 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
148 </tr>'
148 </tr>'
149 fileannotatechild = '
149 fileannotatechild = '
150 <tr>
150 <tr>
151 <td class="metatag">child:</td>
151 <td class="metatag">child:</td>
152 <td><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
152 <td><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
153 </tr>'
153 </tr>'
154 tags = tags.tmpl
154 tags = tags.tmpl
155 tagentry = '
155 tagentry = '
156 <li class="tagEntry parity{parity}">
156 <li class="tagEntry parity{parity}">
157 <tt class="node">{node}</tt>
157 <tt class="node">{node}</tt>
158 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
158 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
159 </li>'
159 </li>'
160 branches = branches.tmpl
160 branches = branches.tmpl
161 branchentry = '
161 branchentry = '
162 <li class="tagEntry parity{parity}">
162 <li class="tagEntry parity{parity}">
163 <tt class="node">{node}</tt>
163 <tt class="node">{node}</tt>
164 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
164 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
165 </li>'
165 </li>'
166 diffblock = '<pre class="parity{parity}">{lines}</pre>'
166 diffblock = '<pre class="parity{parity}">{lines}</pre>'
167 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
167 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
168 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
168 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
169 successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
169 successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
170 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
170 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
171 obsfateverb = '{obsfateverb(successors, markers)}'
171 obsfateverb = '{obsfateverb(successors, markers)}'
172 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
172 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
173 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
173 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
174 obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
174 obsfatedate = '{if(obsfatedate(markers), ' {ifeq(min(obsfatedate(markers)), max(obsfatedate(markers)), '<span class="age">{min(obsfatedate(markers))|rfc822date}</span>', 'between <span class="age">{min(obsfatedate(markers))|rfc822date}</span> and <span class="age">{max(obsfatedate(markers))|rfc822date}</span>')}')}'
175 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}'
175 obsfateentry = '
176 <tr>
177 <th class="obsolete">obsolete:</th>
178 <td class="obsolete">{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}{obsfatedate}</td>
179 </tr>'
176 filediffparent = '
180 filediffparent = '
177 <tr>
181 <tr>
178 <th class="parent">parent {rev}:</th>
182 <th class="parent">parent {rev}:</th>
179 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
183 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
180 </tr>'
184 </tr>'
181 filediffchild = '
185 filediffchild = '
182 <tr>
186 <tr>
183 <th class="child">child {rev}:</th>
187 <th class="child">child {rev}:</th>
184 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
188 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
185 </tr>'
189 </tr>'
186 indexentry = '
190 indexentry = '
187 <tr class="parity{parity}">
191 <tr class="parity{parity}">
188 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
192 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
189 <td>{description}</td>
193 <td>{description}</td>
190 <td>{contact|obfuscate}</td>
194 <td>{contact|obfuscate}</td>
191 <td class="age">{lastchange|rfc822date}</td>
195 <td class="age">{lastchange|rfc822date}</td>
192 <td class="indexlinks">
196 <td class="indexlinks">
193 <a href="{url|urlescape}rss-log">RSS</a>
197 <a href="{url|urlescape}rss-log">RSS</a>
194 <a href="{url|urlescape}atom-log">Atom</a>
198 <a href="{url|urlescape}atom-log">Atom</a>
195 {archives%archiveentry}
199 {archives%archiveentry}
196 </td>
200 </td>
197 </tr>'
201 </tr>'
198 index = index.tmpl
202 index = index.tmpl
199 archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
203 archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
200 notfound = notfound.tmpl
204 notfound = notfound.tmpl
201 error = error.tmpl
205 error = error.tmpl
202 urlparameter = '{separator}{name}={value|urlescape}'
206 urlparameter = '{separator}{name}={value|urlescape}'
203 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
207 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
204 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
208 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,714 +1,719
1 Test file dedicated to testing the divergent troubles from obsolete changeset.
1 Test file dedicated to testing the divergent troubles from obsolete changeset.
2
2
3 This is the most complex troubles from far so we isolate it in a dedicated
3 This is the most complex troubles from far so we isolate it in a dedicated
4 file.
4 file.
5
5
6 Enable obsolete
6 Enable obsolete
7
7
8 $ cat >> $HGRCPATH << EOF
8 $ cat >> $HGRCPATH << EOF
9 > [ui]
9 > [ui]
10 > logtemplate = {rev}:{node|short} {desc}{if(obsfate, " [{join(obsfate, "; ")}]")}\n
10 > logtemplate = {rev}:{node|short} {desc}{if(obsfate, " [{join(obsfate, "; ")}]")}\n
11 > [experimental]
11 > [experimental]
12 > evolution.createmarkers=True
12 > evolution.createmarkers=True
13 > [extensions]
13 > [extensions]
14 > drawdag=$TESTDIR/drawdag.py
14 > drawdag=$TESTDIR/drawdag.py
15 > [alias]
15 > [alias]
16 > debugobsolete = debugobsolete -d '0 0'
16 > debugobsolete = debugobsolete -d '0 0'
17 > [phases]
17 > [phases]
18 > publish=False
18 > publish=False
19 > EOF
19 > EOF
20
20
21
21
22 $ mkcommit() {
22 $ mkcommit() {
23 > echo "$1" > "$1"
23 > echo "$1" > "$1"
24 > hg add "$1"
24 > hg add "$1"
25 > hg ci -m "$1"
25 > hg ci -m "$1"
26 > }
26 > }
27 $ getid() {
27 $ getid() {
28 > hg log --hidden -r "desc('$1')" -T '{node}\n'
28 > hg log --hidden -r "desc('$1')" -T '{node}\n'
29 > }
29 > }
30
30
31 setup repo
31 setup repo
32
32
33 $ hg init reference
33 $ hg init reference
34 $ cd reference
34 $ cd reference
35 $ mkcommit base
35 $ mkcommit base
36 $ mkcommit A_0
36 $ mkcommit A_0
37 $ hg up 0
37 $ hg up 0
38 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
38 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
39 $ mkcommit A_1
39 $ mkcommit A_1
40 created new head
40 created new head
41 $ hg up 0
41 $ hg up 0
42 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
42 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
43 $ mkcommit A_2
43 $ mkcommit A_2
44 created new head
44 created new head
45 $ hg up 0
45 $ hg up 0
46 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
46 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
47 $ cd ..
47 $ cd ..
48
48
49
49
50 $ newcase() {
50 $ newcase() {
51 > hg clone -u 0 -q reference $1
51 > hg clone -u 0 -q reference $1
52 > cd $1
52 > cd $1
53 > }
53 > }
54
54
55 direct divergence
55 direct divergence
56 -----------------
56 -----------------
57
57
58 A_1 have two direct and divergent successors A_1 and A_1
58 A_1 have two direct and divergent successors A_1 and A_1
59
59
60 $ newcase direct
60 $ newcase direct
61 $ hg debugobsolete `getid A_0` `getid A_1`
61 $ hg debugobsolete `getid A_0` `getid A_1`
62 obsoleted 1 changesets
62 obsoleted 1 changesets
63 $ hg debugobsolete `getid A_0` `getid A_2`
63 $ hg debugobsolete `getid A_0` `getid A_2`
64 2 new content-divergent changesets
64 2 new content-divergent changesets
65 $ hg log -G --hidden
65 $ hg log -G --hidden
66 * 3:392fd25390da A_2
66 * 3:392fd25390da A_2
67 |
67 |
68 | * 2:82623d38b9ba A_1
68 | * 2:82623d38b9ba A_1
69 |/
69 |/
70 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
70 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
71 |/
71 |/
72 @ 0:d20a80d4def3 base
72 @ 0:d20a80d4def3 base
73
73
74 $ hg debugsuccessorssets --hidden 'all()'
74 $ hg debugsuccessorssets --hidden 'all()'
75 d20a80d4def3
75 d20a80d4def3
76 d20a80d4def3
76 d20a80d4def3
77 007dc284c1f8
77 007dc284c1f8
78 82623d38b9ba
78 82623d38b9ba
79 392fd25390da
79 392fd25390da
80 82623d38b9ba
80 82623d38b9ba
81 82623d38b9ba
81 82623d38b9ba
82 392fd25390da
82 392fd25390da
83 392fd25390da
83 392fd25390da
84 $ hg log -r 'contentdivergent()'
84 $ hg log -r 'contentdivergent()'
85 2:82623d38b9ba A_1
85 2:82623d38b9ba A_1
86 3:392fd25390da A_2
86 3:392fd25390da A_2
87 $ hg debugsuccessorssets 'all()' --closest
87 $ hg debugsuccessorssets 'all()' --closest
88 d20a80d4def3
88 d20a80d4def3
89 d20a80d4def3
89 d20a80d4def3
90 82623d38b9ba
90 82623d38b9ba
91 82623d38b9ba
91 82623d38b9ba
92 392fd25390da
92 392fd25390da
93 392fd25390da
93 392fd25390da
94 $ hg debugsuccessorssets 'all()' --closest --hidden
94 $ hg debugsuccessorssets 'all()' --closest --hidden
95 d20a80d4def3
95 d20a80d4def3
96 d20a80d4def3
96 d20a80d4def3
97 007dc284c1f8
97 007dc284c1f8
98 82623d38b9ba
98 82623d38b9ba
99 392fd25390da
99 392fd25390da
100 82623d38b9ba
100 82623d38b9ba
101 82623d38b9ba
101 82623d38b9ba
102 392fd25390da
102 392fd25390da
103 392fd25390da
103 392fd25390da
104
104
105 check that mercurial refuse to push
105 check that mercurial refuse to push
106
106
107 $ hg init ../other
107 $ hg init ../other
108 $ hg push ../other
108 $ hg push ../other
109 pushing to ../other
109 pushing to ../other
110 searching for changes
110 searching for changes
111 abort: push includes content-divergent changeset: 392fd25390da!
111 abort: push includes content-divergent changeset: 392fd25390da!
112 [255]
112 [255]
113
113
114 $ cd ..
114 $ cd ..
115
115
116
116
117 indirect divergence with known changeset
117 indirect divergence with known changeset
118 -------------------------------------------
118 -------------------------------------------
119
119
120 $ newcase indirect_known
120 $ newcase indirect_known
121 $ hg debugobsolete `getid A_0` `getid A_1`
121 $ hg debugobsolete `getid A_0` `getid A_1`
122 obsoleted 1 changesets
122 obsoleted 1 changesets
123 $ hg debugobsolete `getid A_0` `getid A_2`
123 $ hg debugobsolete `getid A_0` `getid A_2`
124 2 new content-divergent changesets
124 2 new content-divergent changesets
125 $ mkcommit A_3
125 $ mkcommit A_3
126 created new head
126 created new head
127 $ hg debugobsolete `getid A_2` `getid A_3`
127 $ hg debugobsolete `getid A_2` `getid A_3`
128 obsoleted 1 changesets
128 obsoleted 1 changesets
129 $ hg log -G --hidden
129 $ hg log -G --hidden
130 @ 4:01f36c5a8fda A_3
130 @ 4:01f36c5a8fda A_3
131 |
131 |
132 | x 3:392fd25390da A_2 [rewritten as 4:01f36c5a8fda]
132 | x 3:392fd25390da A_2 [rewritten as 4:01f36c5a8fda]
133 |/
133 |/
134 | * 2:82623d38b9ba A_1
134 | * 2:82623d38b9ba A_1
135 |/
135 |/
136 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
136 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
137 |/
137 |/
138 o 0:d20a80d4def3 base
138 o 0:d20a80d4def3 base
139
139
140 $ hg debugsuccessorssets --hidden 'all()'
140 $ hg debugsuccessorssets --hidden 'all()'
141 d20a80d4def3
141 d20a80d4def3
142 d20a80d4def3
142 d20a80d4def3
143 007dc284c1f8
143 007dc284c1f8
144 82623d38b9ba
144 82623d38b9ba
145 01f36c5a8fda
145 01f36c5a8fda
146 82623d38b9ba
146 82623d38b9ba
147 82623d38b9ba
147 82623d38b9ba
148 392fd25390da
148 392fd25390da
149 01f36c5a8fda
149 01f36c5a8fda
150 01f36c5a8fda
150 01f36c5a8fda
151 01f36c5a8fda
151 01f36c5a8fda
152 $ hg log -r 'contentdivergent()'
152 $ hg log -r 'contentdivergent()'
153 2:82623d38b9ba A_1
153 2:82623d38b9ba A_1
154 4:01f36c5a8fda A_3
154 4:01f36c5a8fda A_3
155 $ hg debugsuccessorssets 'all()' --closest
155 $ hg debugsuccessorssets 'all()' --closest
156 d20a80d4def3
156 d20a80d4def3
157 d20a80d4def3
157 d20a80d4def3
158 82623d38b9ba
158 82623d38b9ba
159 82623d38b9ba
159 82623d38b9ba
160 01f36c5a8fda
160 01f36c5a8fda
161 01f36c5a8fda
161 01f36c5a8fda
162 $ hg debugsuccessorssets 'all()' --closest --hidden
162 $ hg debugsuccessorssets 'all()' --closest --hidden
163 d20a80d4def3
163 d20a80d4def3
164 d20a80d4def3
164 d20a80d4def3
165 007dc284c1f8
165 007dc284c1f8
166 82623d38b9ba
166 82623d38b9ba
167 392fd25390da
167 392fd25390da
168 82623d38b9ba
168 82623d38b9ba
169 82623d38b9ba
169 82623d38b9ba
170 392fd25390da
170 392fd25390da
171 392fd25390da
171 392fd25390da
172 01f36c5a8fda
172 01f36c5a8fda
173 01f36c5a8fda
173 01f36c5a8fda
174 $ cd ..
174 $ cd ..
175
175
176
176
177 indirect divergence with known changeset
177 indirect divergence with known changeset
178 -------------------------------------------
178 -------------------------------------------
179
179
180 $ newcase indirect_unknown
180 $ newcase indirect_unknown
181 $ hg debugobsolete `getid A_0` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
181 $ hg debugobsolete `getid A_0` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
182 obsoleted 1 changesets
182 obsoleted 1 changesets
183 $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid A_1`
183 $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid A_1`
184 $ hg debugobsolete `getid A_0` `getid A_2`
184 $ hg debugobsolete `getid A_0` `getid A_2`
185 2 new content-divergent changesets
185 2 new content-divergent changesets
186 $ hg log -G --hidden
186 $ hg log -G --hidden
187 * 3:392fd25390da A_2
187 * 3:392fd25390da A_2
188 |
188 |
189 | * 2:82623d38b9ba A_1
189 | * 2:82623d38b9ba A_1
190 |/
190 |/
191 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
191 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
192 |/
192 |/
193 @ 0:d20a80d4def3 base
193 @ 0:d20a80d4def3 base
194
194
195 $ hg debugsuccessorssets --hidden 'all()'
195 $ hg debugsuccessorssets --hidden 'all()'
196 d20a80d4def3
196 d20a80d4def3
197 d20a80d4def3
197 d20a80d4def3
198 007dc284c1f8
198 007dc284c1f8
199 82623d38b9ba
199 82623d38b9ba
200 392fd25390da
200 392fd25390da
201 82623d38b9ba
201 82623d38b9ba
202 82623d38b9ba
202 82623d38b9ba
203 392fd25390da
203 392fd25390da
204 392fd25390da
204 392fd25390da
205 $ hg log -r 'contentdivergent()'
205 $ hg log -r 'contentdivergent()'
206 2:82623d38b9ba A_1
206 2:82623d38b9ba A_1
207 3:392fd25390da A_2
207 3:392fd25390da A_2
208 $ hg debugsuccessorssets 'all()' --closest
208 $ hg debugsuccessorssets 'all()' --closest
209 d20a80d4def3
209 d20a80d4def3
210 d20a80d4def3
210 d20a80d4def3
211 82623d38b9ba
211 82623d38b9ba
212 82623d38b9ba
212 82623d38b9ba
213 392fd25390da
213 392fd25390da
214 392fd25390da
214 392fd25390da
215 $ hg debugsuccessorssets 'all()' --closest --hidden
215 $ hg debugsuccessorssets 'all()' --closest --hidden
216 d20a80d4def3
216 d20a80d4def3
217 d20a80d4def3
217 d20a80d4def3
218 007dc284c1f8
218 007dc284c1f8
219 82623d38b9ba
219 82623d38b9ba
220 392fd25390da
220 392fd25390da
221 82623d38b9ba
221 82623d38b9ba
222 82623d38b9ba
222 82623d38b9ba
223 392fd25390da
223 392fd25390da
224 392fd25390da
224 392fd25390da
225 $ cd ..
225 $ cd ..
226
226
227 do not take unknown node in account if they are final
227 do not take unknown node in account if they are final
228 -----------------------------------------------------
228 -----------------------------------------------------
229
229
230 $ newcase final-unknown
230 $ newcase final-unknown
231 $ hg debugobsolete `getid A_0` `getid A_1`
231 $ hg debugobsolete `getid A_0` `getid A_1`
232 obsoleted 1 changesets
232 obsoleted 1 changesets
233 $ hg debugobsolete `getid A_1` `getid A_2`
233 $ hg debugobsolete `getid A_1` `getid A_2`
234 obsoleted 1 changesets
234 obsoleted 1 changesets
235 $ hg debugobsolete `getid A_0` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
235 $ hg debugobsolete `getid A_0` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
236 $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc
236 $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc
237 $ hg debugobsolete `getid A_1` dddddddddddddddddddddddddddddddddddddddd
237 $ hg debugobsolete `getid A_1` dddddddddddddddddddddddddddddddddddddddd
238
238
239 $ hg debugsuccessorssets --hidden 'desc('A_0')'
239 $ hg debugsuccessorssets --hidden 'desc('A_0')'
240 007dc284c1f8
240 007dc284c1f8
241 392fd25390da
241 392fd25390da
242 $ hg debugsuccessorssets 'desc('A_0')' --closest
242 $ hg debugsuccessorssets 'desc('A_0')' --closest
243 $ hg debugsuccessorssets 'desc('A_0')' --closest --hidden
243 $ hg debugsuccessorssets 'desc('A_0')' --closest --hidden
244 007dc284c1f8
244 007dc284c1f8
245 82623d38b9ba
245 82623d38b9ba
246
246
247 $ cd ..
247 $ cd ..
248
248
249 divergence that converge again is not divergence anymore
249 divergence that converge again is not divergence anymore
250 -----------------------------------------------------
250 -----------------------------------------------------
251
251
252 $ newcase converged_divergence
252 $ newcase converged_divergence
253 $ hg debugobsolete `getid A_0` `getid A_1`
253 $ hg debugobsolete `getid A_0` `getid A_1`
254 obsoleted 1 changesets
254 obsoleted 1 changesets
255 $ hg debugobsolete `getid A_0` `getid A_2`
255 $ hg debugobsolete `getid A_0` `getid A_2`
256 2 new content-divergent changesets
256 2 new content-divergent changesets
257 $ mkcommit A_3
257 $ mkcommit A_3
258 created new head
258 created new head
259 $ hg debugobsolete `getid A_1` `getid A_3`
259 $ hg debugobsolete `getid A_1` `getid A_3`
260 obsoleted 1 changesets
260 obsoleted 1 changesets
261 $ hg debugobsolete `getid A_2` `getid A_3`
261 $ hg debugobsolete `getid A_2` `getid A_3`
262 obsoleted 1 changesets
262 obsoleted 1 changesets
263 $ hg log -G --hidden
263 $ hg log -G --hidden
264 @ 4:01f36c5a8fda A_3
264 @ 4:01f36c5a8fda A_3
265 |
265 |
266 | x 3:392fd25390da A_2 [rewritten as 4:01f36c5a8fda]
266 | x 3:392fd25390da A_2 [rewritten as 4:01f36c5a8fda]
267 |/
267 |/
268 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
268 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
269 |/
269 |/
270 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
270 | x 1:007dc284c1f8 A_0 [rewritten as 2:82623d38b9ba; rewritten as 3:392fd25390da]
271 |/
271 |/
272 o 0:d20a80d4def3 base
272 o 0:d20a80d4def3 base
273
273
274 $ hg debugsuccessorssets --hidden 'all()'
274 $ hg debugsuccessorssets --hidden 'all()'
275 d20a80d4def3
275 d20a80d4def3
276 d20a80d4def3
276 d20a80d4def3
277 007dc284c1f8
277 007dc284c1f8
278 01f36c5a8fda
278 01f36c5a8fda
279 82623d38b9ba
279 82623d38b9ba
280 01f36c5a8fda
280 01f36c5a8fda
281 392fd25390da
281 392fd25390da
282 01f36c5a8fda
282 01f36c5a8fda
283 01f36c5a8fda
283 01f36c5a8fda
284 01f36c5a8fda
284 01f36c5a8fda
285 $ hg log -r 'contentdivergent()'
285 $ hg log -r 'contentdivergent()'
286 $ hg debugsuccessorssets 'all()' --closest
286 $ hg debugsuccessorssets 'all()' --closest
287 d20a80d4def3
287 d20a80d4def3
288 d20a80d4def3
288 d20a80d4def3
289 01f36c5a8fda
289 01f36c5a8fda
290 01f36c5a8fda
290 01f36c5a8fda
291 $ hg debugsuccessorssets 'all()' --closest --hidden
291 $ hg debugsuccessorssets 'all()' --closest --hidden
292 d20a80d4def3
292 d20a80d4def3
293 d20a80d4def3
293 d20a80d4def3
294 007dc284c1f8
294 007dc284c1f8
295 82623d38b9ba
295 82623d38b9ba
296 392fd25390da
296 392fd25390da
297 82623d38b9ba
297 82623d38b9ba
298 82623d38b9ba
298 82623d38b9ba
299 392fd25390da
299 392fd25390da
300 392fd25390da
300 392fd25390da
301 01f36c5a8fda
301 01f36c5a8fda
302 01f36c5a8fda
302 01f36c5a8fda
303 $ cd ..
303 $ cd ..
304
304
305 split is not divergences
305 split is not divergences
306 -----------------------------
306 -----------------------------
307
307
308 $ newcase split
308 $ newcase split
309 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2`
309 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2`
310 obsoleted 1 changesets
310 obsoleted 1 changesets
311 $ hg log -G --hidden
311 $ hg log -G --hidden
312 o 3:392fd25390da A_2
312 o 3:392fd25390da A_2
313 |
313 |
314 | o 2:82623d38b9ba A_1
314 | o 2:82623d38b9ba A_1
315 |/
315 |/
316 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
316 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
317 |/
317 |/
318 @ 0:d20a80d4def3 base
318 @ 0:d20a80d4def3 base
319
319
320 $ hg debugsuccessorssets --hidden 'all()'
320 $ hg debugsuccessorssets --hidden 'all()'
321 d20a80d4def3
321 d20a80d4def3
322 d20a80d4def3
322 d20a80d4def3
323 007dc284c1f8
323 007dc284c1f8
324 82623d38b9ba 392fd25390da
324 82623d38b9ba 392fd25390da
325 82623d38b9ba
325 82623d38b9ba
326 82623d38b9ba
326 82623d38b9ba
327 392fd25390da
327 392fd25390da
328 392fd25390da
328 392fd25390da
329 $ hg log -r 'contentdivergent()'
329 $ hg log -r 'contentdivergent()'
330 $ hg debugsuccessorssets 'all()' --closest
330 $ hg debugsuccessorssets 'all()' --closest
331 d20a80d4def3
331 d20a80d4def3
332 d20a80d4def3
332 d20a80d4def3
333 82623d38b9ba
333 82623d38b9ba
334 82623d38b9ba
334 82623d38b9ba
335 392fd25390da
335 392fd25390da
336 392fd25390da
336 392fd25390da
337 $ hg debugsuccessorssets 'all()' --closest --hidden
337 $ hg debugsuccessorssets 'all()' --closest --hidden
338 d20a80d4def3
338 d20a80d4def3
339 d20a80d4def3
339 d20a80d4def3
340 007dc284c1f8
340 007dc284c1f8
341 82623d38b9ba 392fd25390da
341 82623d38b9ba 392fd25390da
342 82623d38b9ba
342 82623d38b9ba
343 82623d38b9ba
343 82623d38b9ba
344 392fd25390da
344 392fd25390da
345 392fd25390da
345 392fd25390da
346
346
347 Even when subsequent rewriting happen
347 Even when subsequent rewriting happen
348
348
349 $ mkcommit A_3
349 $ mkcommit A_3
350 created new head
350 created new head
351 $ hg debugobsolete `getid A_1` `getid A_3`
351 $ hg debugobsolete `getid A_1` `getid A_3`
352 obsoleted 1 changesets
352 obsoleted 1 changesets
353 $ hg up 0
353 $ hg up 0
354 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
354 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
355 $ mkcommit A_4
355 $ mkcommit A_4
356 created new head
356 created new head
357 $ hg debugobsolete `getid A_2` `getid A_4`
357 $ hg debugobsolete `getid A_2` `getid A_4`
358 obsoleted 1 changesets
358 obsoleted 1 changesets
359 $ hg up 0
359 $ hg up 0
360 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
360 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
361 $ mkcommit A_5
361 $ mkcommit A_5
362 created new head
362 created new head
363 $ hg debugobsolete `getid A_4` `getid A_5`
363 $ hg debugobsolete `getid A_4` `getid A_5`
364 obsoleted 1 changesets
364 obsoleted 1 changesets
365 $ hg log -G --hidden
365 $ hg log -G --hidden
366 @ 6:e442cfc57690 A_5
366 @ 6:e442cfc57690 A_5
367 |
367 |
368 | x 5:6a411f0d7a0a A_4 [rewritten as 6:e442cfc57690]
368 | x 5:6a411f0d7a0a A_4 [rewritten as 6:e442cfc57690]
369 |/
369 |/
370 | o 4:01f36c5a8fda A_3
370 | o 4:01f36c5a8fda A_3
371 |/
371 |/
372 | x 3:392fd25390da A_2 [rewritten as 5:6a411f0d7a0a]
372 | x 3:392fd25390da A_2 [rewritten as 5:6a411f0d7a0a]
373 |/
373 |/
374 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
374 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
375 |/
375 |/
376 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
376 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
377 |/
377 |/
378 o 0:d20a80d4def3 base
378 o 0:d20a80d4def3 base
379
379
380 $ hg debugsuccessorssets --hidden 'all()'
380 $ hg debugsuccessorssets --hidden 'all()'
381 d20a80d4def3
381 d20a80d4def3
382 d20a80d4def3
382 d20a80d4def3
383 007dc284c1f8
383 007dc284c1f8
384 01f36c5a8fda e442cfc57690
384 01f36c5a8fda e442cfc57690
385 82623d38b9ba
385 82623d38b9ba
386 01f36c5a8fda
386 01f36c5a8fda
387 392fd25390da
387 392fd25390da
388 e442cfc57690
388 e442cfc57690
389 01f36c5a8fda
389 01f36c5a8fda
390 01f36c5a8fda
390 01f36c5a8fda
391 6a411f0d7a0a
391 6a411f0d7a0a
392 e442cfc57690
392 e442cfc57690
393 e442cfc57690
393 e442cfc57690
394 e442cfc57690
394 e442cfc57690
395 $ hg debugsuccessorssets 'all()' --closest
395 $ hg debugsuccessorssets 'all()' --closest
396 d20a80d4def3
396 d20a80d4def3
397 d20a80d4def3
397 d20a80d4def3
398 01f36c5a8fda
398 01f36c5a8fda
399 01f36c5a8fda
399 01f36c5a8fda
400 e442cfc57690
400 e442cfc57690
401 e442cfc57690
401 e442cfc57690
402 $ hg debugsuccessorssets 'all()' --closest --hidden
402 $ hg debugsuccessorssets 'all()' --closest --hidden
403 d20a80d4def3
403 d20a80d4def3
404 d20a80d4def3
404 d20a80d4def3
405 007dc284c1f8
405 007dc284c1f8
406 82623d38b9ba 392fd25390da
406 82623d38b9ba 392fd25390da
407 82623d38b9ba
407 82623d38b9ba
408 82623d38b9ba
408 82623d38b9ba
409 392fd25390da
409 392fd25390da
410 392fd25390da
410 392fd25390da
411 01f36c5a8fda
411 01f36c5a8fda
412 01f36c5a8fda
412 01f36c5a8fda
413 6a411f0d7a0a
413 6a411f0d7a0a
414 e442cfc57690
414 e442cfc57690
415 e442cfc57690
415 e442cfc57690
416 e442cfc57690
416 e442cfc57690
417 $ hg log -r 'contentdivergent()'
417 $ hg log -r 'contentdivergent()'
418
418
419 Check more complex obsolescence graft (with divergence)
419 Check more complex obsolescence graft (with divergence)
420
420
421 $ mkcommit B_0; hg up 0
421 $ mkcommit B_0; hg up 0
422 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
422 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
423 $ hg debugobsolete `getid B_0` `getid A_2`
423 $ hg debugobsolete `getid B_0` `getid A_2`
424 obsoleted 1 changesets
424 obsoleted 1 changesets
425 $ mkcommit A_7; hg up 0
425 $ mkcommit A_7; hg up 0
426 created new head
426 created new head
427 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
427 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
428 $ mkcommit A_8; hg up 0
428 $ mkcommit A_8; hg up 0
429 created new head
429 created new head
430 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
430 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
431 $ hg debugobsolete `getid A_5` `getid A_7` `getid A_8`
431 $ hg debugobsolete `getid A_5` `getid A_7` `getid A_8`
432 obsoleted 1 changesets
432 obsoleted 1 changesets
433 $ mkcommit A_9; hg up 0
433 $ mkcommit A_9; hg up 0
434 created new head
434 created new head
435 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
435 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
436 $ hg debugobsolete `getid A_5` `getid A_9`
436 $ hg debugobsolete `getid A_5` `getid A_9`
437 4 new content-divergent changesets
437 4 new content-divergent changesets
438 $ hg log -G --hidden
438 $ hg log -G --hidden
439 * 10:bed64f5d2f5a A_9
439 * 10:bed64f5d2f5a A_9
440 |
440 |
441 | * 9:14608b260df8 A_8
441 | * 9:14608b260df8 A_8
442 |/
442 |/
443 | * 8:7ae126973a96 A_7
443 | * 8:7ae126973a96 A_7
444 |/
444 |/
445 | x 7:3750ebee865d B_0 [rewritten as 3:392fd25390da]
445 | x 7:3750ebee865d B_0 [rewritten as 3:392fd25390da]
446 | |
446 | |
447 | x 6:e442cfc57690 A_5 [rewritten as 10:bed64f5d2f5a; split as 8:7ae126973a96, 9:14608b260df8]
447 | x 6:e442cfc57690 A_5 [rewritten as 10:bed64f5d2f5a; split as 8:7ae126973a96, 9:14608b260df8]
448 |/
448 |/
449 | x 5:6a411f0d7a0a A_4 [rewritten as 6:e442cfc57690]
449 | x 5:6a411f0d7a0a A_4 [rewritten as 6:e442cfc57690]
450 |/
450 |/
451 | * 4:01f36c5a8fda A_3
451 | * 4:01f36c5a8fda A_3
452 |/
452 |/
453 | x 3:392fd25390da A_2 [rewritten as 5:6a411f0d7a0a]
453 | x 3:392fd25390da A_2 [rewritten as 5:6a411f0d7a0a]
454 |/
454 |/
455 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
455 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
456 |/
456 |/
457 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
457 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
458 |/
458 |/
459 @ 0:d20a80d4def3 base
459 @ 0:d20a80d4def3 base
460
460
461 $ hg debugsuccessorssets --hidden 'all()'
461 $ hg debugsuccessorssets --hidden 'all()'
462 d20a80d4def3
462 d20a80d4def3
463 d20a80d4def3
463 d20a80d4def3
464 007dc284c1f8
464 007dc284c1f8
465 01f36c5a8fda bed64f5d2f5a
465 01f36c5a8fda bed64f5d2f5a
466 01f36c5a8fda 7ae126973a96 14608b260df8
466 01f36c5a8fda 7ae126973a96 14608b260df8
467 82623d38b9ba
467 82623d38b9ba
468 01f36c5a8fda
468 01f36c5a8fda
469 392fd25390da
469 392fd25390da
470 bed64f5d2f5a
470 bed64f5d2f5a
471 7ae126973a96 14608b260df8
471 7ae126973a96 14608b260df8
472 01f36c5a8fda
472 01f36c5a8fda
473 01f36c5a8fda
473 01f36c5a8fda
474 6a411f0d7a0a
474 6a411f0d7a0a
475 bed64f5d2f5a
475 bed64f5d2f5a
476 7ae126973a96 14608b260df8
476 7ae126973a96 14608b260df8
477 e442cfc57690
477 e442cfc57690
478 bed64f5d2f5a
478 bed64f5d2f5a
479 7ae126973a96 14608b260df8
479 7ae126973a96 14608b260df8
480 3750ebee865d
480 3750ebee865d
481 bed64f5d2f5a
481 bed64f5d2f5a
482 7ae126973a96 14608b260df8
482 7ae126973a96 14608b260df8
483 7ae126973a96
483 7ae126973a96
484 7ae126973a96
484 7ae126973a96
485 14608b260df8
485 14608b260df8
486 14608b260df8
486 14608b260df8
487 bed64f5d2f5a
487 bed64f5d2f5a
488 bed64f5d2f5a
488 bed64f5d2f5a
489 $ hg debugsuccessorssets 'all()' --closest
489 $ hg debugsuccessorssets 'all()' --closest
490 d20a80d4def3
490 d20a80d4def3
491 d20a80d4def3
491 d20a80d4def3
492 01f36c5a8fda
492 01f36c5a8fda
493 01f36c5a8fda
493 01f36c5a8fda
494 7ae126973a96
494 7ae126973a96
495 7ae126973a96
495 7ae126973a96
496 14608b260df8
496 14608b260df8
497 14608b260df8
497 14608b260df8
498 bed64f5d2f5a
498 bed64f5d2f5a
499 bed64f5d2f5a
499 bed64f5d2f5a
500 $ hg debugsuccessorssets 'all()' --closest --hidden
500 $ hg debugsuccessorssets 'all()' --closest --hidden
501 d20a80d4def3
501 d20a80d4def3
502 d20a80d4def3
502 d20a80d4def3
503 007dc284c1f8
503 007dc284c1f8
504 82623d38b9ba 392fd25390da
504 82623d38b9ba 392fd25390da
505 82623d38b9ba
505 82623d38b9ba
506 82623d38b9ba
506 82623d38b9ba
507 392fd25390da
507 392fd25390da
508 392fd25390da
508 392fd25390da
509 01f36c5a8fda
509 01f36c5a8fda
510 01f36c5a8fda
510 01f36c5a8fda
511 6a411f0d7a0a
511 6a411f0d7a0a
512 e442cfc57690
512 e442cfc57690
513 e442cfc57690
513 e442cfc57690
514 e442cfc57690
514 e442cfc57690
515 3750ebee865d
515 3750ebee865d
516 392fd25390da
516 392fd25390da
517 7ae126973a96
517 7ae126973a96
518 7ae126973a96
518 7ae126973a96
519 14608b260df8
519 14608b260df8
520 14608b260df8
520 14608b260df8
521 bed64f5d2f5a
521 bed64f5d2f5a
522 bed64f5d2f5a
522 bed64f5d2f5a
523 $ hg log -r 'contentdivergent()'
523 $ hg log -r 'contentdivergent()'
524 4:01f36c5a8fda A_3
524 4:01f36c5a8fda A_3
525 8:7ae126973a96 A_7
525 8:7ae126973a96 A_7
526 9:14608b260df8 A_8
526 9:14608b260df8 A_8
527 10:bed64f5d2f5a A_9
527 10:bed64f5d2f5a A_9
528
528
529 fix the divergence
529 fix the divergence
530
530
531 $ mkcommit A_A; hg up 0
531 $ mkcommit A_A; hg up 0
532 created new head
532 created new head
533 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
533 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
534 $ hg debugobsolete `getid A_9` `getid A_A`
534 $ hg debugobsolete `getid A_9` `getid A_A`
535 obsoleted 1 changesets
535 obsoleted 1 changesets
536 $ hg debugobsolete `getid A_7` `getid A_A`
536 $ hg debugobsolete `getid A_7` `getid A_A`
537 obsoleted 1 changesets
537 obsoleted 1 changesets
538 $ hg debugobsolete `getid A_8` `getid A_A`
538 $ hg debugobsolete `getid A_8` `getid A_A`
539 obsoleted 1 changesets
539 obsoleted 1 changesets
540 $ hg log -G --hidden
540 $ hg log -G --hidden
541 o 11:a139f71be9da A_A
541 o 11:a139f71be9da A_A
542 |
542 |
543 | x 10:bed64f5d2f5a A_9 [rewritten as 11:a139f71be9da]
543 | x 10:bed64f5d2f5a A_9 [rewritten as 11:a139f71be9da]
544 |/
544 |/
545 | x 9:14608b260df8 A_8 [rewritten as 11:a139f71be9da]
545 | x 9:14608b260df8 A_8 [rewritten as 11:a139f71be9da]
546 |/
546 |/
547 | x 8:7ae126973a96 A_7 [rewritten as 11:a139f71be9da]
547 | x 8:7ae126973a96 A_7 [rewritten as 11:a139f71be9da]
548 |/
548 |/
549 | x 7:3750ebee865d B_0 [rewritten as 3:392fd25390da]
549 | x 7:3750ebee865d B_0 [rewritten as 3:392fd25390da]
550 | |
550 | |
551 | x 6:e442cfc57690 A_5 [rewritten as 10:bed64f5d2f5a; split as 8:7ae126973a96, 9:14608b260df8]
551 | x 6:e442cfc57690 A_5 [rewritten as 10:bed64f5d2f5a; split as 8:7ae126973a96, 9:14608b260df8]
552 |/
552 |/
553 | x 5:6a411f0d7a0a A_4 [rewritten as 6:e442cfc57690]
553 | x 5:6a411f0d7a0a A_4 [rewritten as 6:e442cfc57690]
554 |/
554 |/
555 | o 4:01f36c5a8fda A_3
555 | o 4:01f36c5a8fda A_3
556 |/
556 |/
557 | x 3:392fd25390da A_2 [rewritten as 5:6a411f0d7a0a]
557 | x 3:392fd25390da A_2 [rewritten as 5:6a411f0d7a0a]
558 |/
558 |/
559 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
559 | x 2:82623d38b9ba A_1 [rewritten as 4:01f36c5a8fda]
560 |/
560 |/
561 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
561 | x 1:007dc284c1f8 A_0 [split as 2:82623d38b9ba, 3:392fd25390da]
562 |/
562 |/
563 @ 0:d20a80d4def3 base
563 @ 0:d20a80d4def3 base
564
564
565 $ hg debugsuccessorssets --hidden 'all()'
565 $ hg debugsuccessorssets --hidden 'all()'
566 d20a80d4def3
566 d20a80d4def3
567 d20a80d4def3
567 d20a80d4def3
568 007dc284c1f8
568 007dc284c1f8
569 01f36c5a8fda a139f71be9da
569 01f36c5a8fda a139f71be9da
570 82623d38b9ba
570 82623d38b9ba
571 01f36c5a8fda
571 01f36c5a8fda
572 392fd25390da
572 392fd25390da
573 a139f71be9da
573 a139f71be9da
574 01f36c5a8fda
574 01f36c5a8fda
575 01f36c5a8fda
575 01f36c5a8fda
576 6a411f0d7a0a
576 6a411f0d7a0a
577 a139f71be9da
577 a139f71be9da
578 e442cfc57690
578 e442cfc57690
579 a139f71be9da
579 a139f71be9da
580 3750ebee865d
580 3750ebee865d
581 a139f71be9da
581 a139f71be9da
582 7ae126973a96
582 7ae126973a96
583 a139f71be9da
583 a139f71be9da
584 14608b260df8
584 14608b260df8
585 a139f71be9da
585 a139f71be9da
586 bed64f5d2f5a
586 bed64f5d2f5a
587 a139f71be9da
587 a139f71be9da
588 a139f71be9da
588 a139f71be9da
589 a139f71be9da
589 a139f71be9da
590 $ hg debugsuccessorssets 'all()' --closest
590 $ hg debugsuccessorssets 'all()' --closest
591 d20a80d4def3
591 d20a80d4def3
592 d20a80d4def3
592 d20a80d4def3
593 01f36c5a8fda
593 01f36c5a8fda
594 01f36c5a8fda
594 01f36c5a8fda
595 a139f71be9da
595 a139f71be9da
596 a139f71be9da
596 a139f71be9da
597 $ hg debugsuccessorssets 'all()' --closest --hidden
597 $ hg debugsuccessorssets 'all()' --closest --hidden
598 d20a80d4def3
598 d20a80d4def3
599 d20a80d4def3
599 d20a80d4def3
600 007dc284c1f8
600 007dc284c1f8
601 82623d38b9ba 392fd25390da
601 82623d38b9ba 392fd25390da
602 82623d38b9ba
602 82623d38b9ba
603 82623d38b9ba
603 82623d38b9ba
604 392fd25390da
604 392fd25390da
605 392fd25390da
605 392fd25390da
606 01f36c5a8fda
606 01f36c5a8fda
607 01f36c5a8fda
607 01f36c5a8fda
608 6a411f0d7a0a
608 6a411f0d7a0a
609 e442cfc57690
609 e442cfc57690
610 e442cfc57690
610 e442cfc57690
611 e442cfc57690
611 e442cfc57690
612 3750ebee865d
612 3750ebee865d
613 392fd25390da
613 392fd25390da
614 7ae126973a96
614 7ae126973a96
615 a139f71be9da
615 a139f71be9da
616 14608b260df8
616 14608b260df8
617 a139f71be9da
617 a139f71be9da
618 bed64f5d2f5a
618 bed64f5d2f5a
619 a139f71be9da
619 a139f71be9da
620 a139f71be9da
620 a139f71be9da
621 a139f71be9da
621 a139f71be9da
622 $ hg log -r 'contentdivergent()'
622 $ hg log -r 'contentdivergent()'
623
623
624 #if serve
624 #if serve
625
625
626 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid --config web.view=all \
626 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid --config web.view=all \
627 > -A access.log -E errors.log
627 > -A access.log -E errors.log
628 $ cat hg.pid >> $DAEMON_PIDS
628 $ cat hg.pid >> $DAEMON_PIDS
629
629
630 check an obsolete changeset that was rewritten and also split
630 check an obsolete changeset that was rewritten and also split
631
631
632 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=paper' | egrep 'rewritten|split'
632 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=paper' | egrep 'rewritten|split'
633 <td>rewritten as <a href="/rev/bed64f5d2f5a?style=paper">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>split as <a href="/rev/7ae126973a96?style=paper">7ae126973a96</a> <a href="/rev/14608b260df8?style=paper">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
633 <td>rewritten as <a href="/rev/bed64f5d2f5a?style=paper">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br>
634 split as <a href="/rev/7ae126973a96?style=paper">7ae126973a96</a> <a href="/rev/14608b260df8?style=paper">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
634 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=coal' | egrep 'rewritten|split'
635 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=coal' | egrep 'rewritten|split'
635 <td>rewritten as <a href="/rev/bed64f5d2f5a?style=coal">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>split as <a href="/rev/7ae126973a96?style=coal">7ae126973a96</a> <a href="/rev/14608b260df8?style=coal">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
636 <td>rewritten as <a href="/rev/bed64f5d2f5a?style=coal">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br>
637 split as <a href="/rev/7ae126973a96?style=coal">7ae126973a96</a> <a href="/rev/14608b260df8?style=coal">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
636 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=gitweb' | egrep 'rewritten|split'
638 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=gitweb' | egrep 'rewritten|split'
637 <tr><td>obsolete</td><td>rewritten as <a class="list" href="/rev/bed64f5d2f5a?style=gitweb">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>split as <a class="list" href="/rev/7ae126973a96?style=gitweb">7ae126973a96</a> <a class="list" href="/rev/14608b260df8?style=gitweb">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td></tr>
639 <td>rewritten as <a class="list" href="/rev/bed64f5d2f5a?style=gitweb">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
640 <td>split as <a class="list" href="/rev/7ae126973a96?style=gitweb">7ae126973a96</a> <a class="list" href="/rev/14608b260df8?style=gitweb">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
638 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=monoblue' | egrep 'rewritten|split'
641 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=monoblue' | egrep 'rewritten|split'
639 <dt>obsolete</dt><dd>rewritten as <a href="/rev/bed64f5d2f5a?style=monoblue">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>split as <a href="/rev/7ae126973a96?style=monoblue">7ae126973a96</a> <a href="/rev/14608b260df8?style=monoblue">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd>
642 <dd>rewritten as <a href="/rev/bed64f5d2f5a?style=monoblue">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd>
643 <dd>split as <a href="/rev/7ae126973a96?style=monoblue">7ae126973a96</a> <a href="/rev/14608b260df8?style=monoblue">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd>
640 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=spartan' | egrep 'rewritten|split'
644 $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=spartan' | egrep 'rewritten|split'
641 <td class="obsolete">rewritten as <a href="/rev/bed64f5d2f5a?style=spartan">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>split as <a href="/rev/7ae126973a96?style=spartan">7ae126973a96</a> <a href="/rev/14608b260df8?style=spartan">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
645 <td class="obsolete">rewritten as <a href="/rev/bed64f5d2f5a?style=spartan">bed64f5d2f5a</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
646 <td class="obsolete">split as <a href="/rev/7ae126973a96?style=spartan">7ae126973a96</a> <a href="/rev/14608b260df8?style=spartan">14608b260df8</a> by &#116;&#101;&#115;&#116; <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
642
647
643 $ killdaemons.py
648 $ killdaemons.py
644
649
645 #endif
650 #endif
646
651
647 $ cd ..
652 $ cd ..
648
653
649
654
650 Subset does not diverge
655 Subset does not diverge
651 ------------------------------
656 ------------------------------
652
657
653 Do not report divergent successors-set if it is a subset of another
658 Do not report divergent successors-set if it is a subset of another
654 successors-set. (report [A,B] not [A] + [A,B])
659 successors-set. (report [A,B] not [A] + [A,B])
655
660
656 $ newcase subset
661 $ newcase subset
657 $ hg debugobsolete `getid A_0` `getid A_2`
662 $ hg debugobsolete `getid A_0` `getid A_2`
658 obsoleted 1 changesets
663 obsoleted 1 changesets
659 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2`
664 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2`
660 $ hg debugsuccessorssets --hidden 'desc('A_0')'
665 $ hg debugsuccessorssets --hidden 'desc('A_0')'
661 007dc284c1f8
666 007dc284c1f8
662 82623d38b9ba 392fd25390da
667 82623d38b9ba 392fd25390da
663 $ hg debugsuccessorssets 'desc('A_0')' --closest
668 $ hg debugsuccessorssets 'desc('A_0')' --closest
664 $ hg debugsuccessorssets 'desc('A_0')' --closest --hidden
669 $ hg debugsuccessorssets 'desc('A_0')' --closest --hidden
665 007dc284c1f8
670 007dc284c1f8
666 82623d38b9ba 392fd25390da
671 82623d38b9ba 392fd25390da
667
672
668 $ cd ..
673 $ cd ..
669
674
670 Use scmutil.cleanupnodes API to create divergence
675 Use scmutil.cleanupnodes API to create divergence
671
676
672 $ hg init cleanupnodes
677 $ hg init cleanupnodes
673 $ cd cleanupnodes
678 $ cd cleanupnodes
674 $ hg debugdrawdag <<'EOS'
679 $ hg debugdrawdag <<'EOS'
675 > B1 B3 B4
680 > B1 B3 B4
676 > | \|
681 > | \|
677 > A Z
682 > A Z
678 > EOS
683 > EOS
679
684
680 $ hg update -q B1
685 $ hg update -q B1
681 $ echo 3 >> B
686 $ echo 3 >> B
682 $ hg commit --amend -m B2
687 $ hg commit --amend -m B2
683 $ cat > $TESTTMP/scmutilcleanup.py <<EOF
688 $ cat > $TESTTMP/scmutilcleanup.py <<EOF
684 > from mercurial import registrar, scmutil
689 > from mercurial import registrar, scmutil
685 > cmdtable = {}
690 > cmdtable = {}
686 > command = registrar.command(cmdtable)
691 > command = registrar.command(cmdtable)
687 > @command('cleanup')
692 > @command('cleanup')
688 > def cleanup(ui, repo):
693 > def cleanup(ui, repo):
689 > def node(expr):
694 > def node(expr):
690 > unfi = repo.unfiltered()
695 > unfi = repo.unfiltered()
691 > rev = unfi.revs(expr).first()
696 > rev = unfi.revs(expr).first()
692 > return unfi.changelog.node(rev)
697 > return unfi.changelog.node(rev)
693 > with repo.wlock(), repo.lock(), repo.transaction('delayedstrip'):
698 > with repo.wlock(), repo.lock(), repo.transaction('delayedstrip'):
694 > mapping = {node('desc(B1)'): [node('desc(B3)')],
699 > mapping = {node('desc(B1)'): [node('desc(B3)')],
695 > node('desc(B3)'): [node('desc(B4)')]}
700 > node('desc(B3)'): [node('desc(B4)')]}
696 > scmutil.cleanupnodes(repo, mapping, 'test')
701 > scmutil.cleanupnodes(repo, mapping, 'test')
697 > EOF
702 > EOF
698
703
699 $ rm .hg/localtags
704 $ rm .hg/localtags
700 $ hg cleanup --config extensions.t=$TESTTMP/scmutilcleanup.py
705 $ hg cleanup --config extensions.t=$TESTTMP/scmutilcleanup.py
701 2 new content-divergent changesets
706 2 new content-divergent changesets
702 $ hg log -G -T '{rev}:{node|short} {desc} {instabilities}' -r 'sort(all(), topo)'
707 $ hg log -G -T '{rev}:{node|short} {desc} {instabilities}' -r 'sort(all(), topo)'
703 @ 5:1a2a9b5b0030 B2 content-divergent
708 @ 5:1a2a9b5b0030 B2 content-divergent
704 |
709 |
705 | * 4:70d5a63ca112 B4 content-divergent
710 | * 4:70d5a63ca112 B4 content-divergent
706 | |
711 | |
707 | o 1:48b9aae0607f Z
712 | o 1:48b9aae0607f Z
708 |
713 |
709 o 0:426bada5c675 A
714 o 0:426bada5c675 A
710
715
711 $ hg debugobsolete
716 $ hg debugobsolete
712 a178212c3433c4e77b573f6011e29affb8aefa33 1a2a9b5b0030632400aa78e00388c20f99d3ec44 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
717 a178212c3433c4e77b573f6011e29affb8aefa33 1a2a9b5b0030632400aa78e00388c20f99d3ec44 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
713 a178212c3433c4e77b573f6011e29affb8aefa33 ad6478fb94ecec98b86daae98722865d494ac561 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'test', 'user': 'test'}
718 a178212c3433c4e77b573f6011e29affb8aefa33 ad6478fb94ecec98b86daae98722865d494ac561 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'test', 'user': 'test'}
714 ad6478fb94ecec98b86daae98722865d494ac561 70d5a63ca112acb3764bc1d7320ca90ea688d671 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'operation': 'test', 'user': 'test'}
719 ad6478fb94ecec98b86daae98722865d494ac561 70d5a63ca112acb3764bc1d7320ca90ea688d671 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'operation': 'test', 'user': 'test'}
General Comments 0
You need to be logged in to leave comments. Login now