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