##// END OF EJS Templates
hgweb: show users recorded in obsolescence markers...
av6 -
r36213:513d268e default
parent child Browse files
Show More
@@ -1,361 +1,362 b''
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 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}'
278 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
279 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}'
279 shortlogentry = '
280 shortlogentry = '
280 <tr class="parity{parity}">
281 <tr class="parity{parity}">
281 <td class="age"><i class="age">{date|rfc822date}</i></td>
282 <td class="age"><i class="age">{date|rfc822date}</i></td>
282 <td><i>{author|person}</i></td>
283 <td><i>{author|person}</i></td>
283 <td>
284 <td>
284 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
285 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
285 <b>{desc|strip|firstline|escape|nonempty}</b>
286 <b>{desc|strip|firstline|escape|nonempty}</b>
286 {alltags}
287 {alltags}
287 </a>
288 </a>
288 </td>
289 </td>
289 <td class="link" nowrap>
290 <td class="link" nowrap>
290 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
291 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
291 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
292 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
292 </td>
293 </td>
293 </tr>'
294 </tr>'
294 filelogentry = '
295 filelogentry = '
295 <tr class="parity{if(patch, '1', '{parity}')}">
296 <tr class="parity{if(patch, '1', '{parity}')}">
296 <td class="age"><i class="age">{date|rfc822date}</i></td>
297 <td class="age"><i class="age">{date|rfc822date}</i></td>
297 <td><i>{author|person}</i></td>
298 <td><i>{author|person}</i></td>
298 <td>
299 <td>
299 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
300 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
300 <b>{desc|strip|firstline|escape|nonempty}</b>
301 <b>{desc|strip|firstline|escape|nonempty}</b>
301 {alltags}
302 {alltags}
302 </a>
303 </a>
303 </td>
304 </td>
304 <td class="link">
305 <td class="link">
305 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
306 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
306 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
307 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
307 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
308 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
308 {rename%filelogrename}
309 {rename%filelogrename}
309 </td>
310 </td>
310 </tr>
311 </tr>
311 {if(patch, '<tr><td colspan="4">{diff}</td></tr>')}'
312 {if(patch, '<tr><td colspan="4">{diff}</td></tr>')}'
312 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
313 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
313 indexentry = '
314 indexentry = '
314 <tr class="parity{parity}">
315 <tr class="parity{parity}">
315 <td>
316 <td>
316 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
317 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
317 <b>{name|escape}</b>
318 <b>{name|escape}</b>
318 </a>
319 </a>
319 </td>
320 </td>
320 <td>{description}</td>
321 <td>{description}</td>
321 <td>{contact|obfuscate}</td>
322 <td>{contact|obfuscate}</td>
322 <td class="age">{lastchange|rfc822date}</td>
323 <td class="age">{lastchange|rfc822date}</td>
323 <td class="indexlinks">{archives%indexarchiveentry}</td>
324 <td class="indexlinks">{archives%indexarchiveentry}</td>
324 <td>{if(isdirectory, '',
325 <td>{if(isdirectory, '',
325 '<div class="rss_logo">
326 '<div class="rss_logo">
326 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
327 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
327 </div>'
328 </div>'
328 )}
329 )}
329 </td>
330 </td>
330 </tr>\n'
331 </tr>\n'
331 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
332 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
332 index = index.tmpl
333 index = index.tmpl
333 urlparameter = '{separator}{name}={value|urlescape}'
334 urlparameter = '{separator}{name}={value|urlescape}'
334 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
335 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
335 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
336 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
336
337
337 searchform = '
338 searchform = '
338 <div class="search">
339 <div class="search">
339 <form id="searchform" action="{url|urlescape}log">
340 <form id="searchform" action="{url|urlescape}log">
340 {sessionvars%hiddenformentry}
341 {sessionvars%hiddenformentry}
341 <input name="rev" type="text" value="{query|escape}" size="40" />
342 <input name="rev" type="text" value="{query|escape}" size="40" />
342 <div id="hint">{searchhint}</div>
343 <div id="hint">{searchhint}</div>
343 </form>
344 </form>
344 </div>'
345 </div>'
345 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
346 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
346 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
347 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
347
348
348 diffoptsform = '
349 diffoptsform = '
349 <form id="diffopts-form"
350 <form id="diffopts-form"
350 data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
351 data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
351 data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
352 data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
352 data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
353 data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
353 data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
354 data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
354 <span>Ignore whitespace changes - </span>
355 <span>Ignore whitespace changes - </span>
355 <span>Everywhere:</span>
356 <span>Everywhere:</span>
356 <input id="ignorews-checkbox" type="checkbox" />
357 <input id="ignorews-checkbox" type="checkbox" />
357 <span>Within whitespace:</span>
358 <span>Within whitespace:</span>
358 <input id="ignorewsamount-checkbox" type="checkbox" />
359 <input id="ignorewsamount-checkbox" type="checkbox" />
359 <span>At end of lines:</span>
360 <span>At end of lines:</span>
360 <input id="ignorewseol-checkbox" type="checkbox" />
361 <input id="ignorewseol-checkbox" type="checkbox" />
361 </form>'
362 </form>'
@@ -1,300 +1,301 b''
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 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}'
236 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
237 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}'
237 shortlogentry = '
238 shortlogentry = '
238 <tr class="parity{parity}">
239 <tr class="parity{parity}">
239 <td class="nowrap age">{date|rfc822date}</td>
240 <td class="nowrap age">{date|rfc822date}</td>
240 <td>{author|person}</td>
241 <td>{author|person}</td>
241 <td>
242 <td>
242 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
243 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
243 {desc|strip|firstline|escape|nonempty}
244 {desc|strip|firstline|escape|nonempty}
244 {alltags}
245 {alltags}
245 </a>
246 </a>
246 </td>
247 </td>
247 <td class="nowrap">
248 <td class="nowrap">
248 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
249 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
249 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
250 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
250 </td>
251 </td>
251 </tr>'
252 </tr>'
252 filelogentry = '
253 filelogentry = '
253 <tr class="parity{parity}">
254 <tr class="parity{parity}">
254 <td class="nowrap age">{date|rfc822date}</td>
255 <td class="nowrap age">{date|rfc822date}</td>
255 <td>{author|person}</td>
256 <td>{author|person}</td>
256 <td>
257 <td>
257 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
258 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
258 {desc|strip|firstline|escape|nonempty}
259 {desc|strip|firstline|escape|nonempty}
259 {alltags}
260 {alltags}
260 </a>
261 </a>
261 </td>
262 </td>
262 <td class="nowrap">
263 <td class="nowrap">
263 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
264 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
264 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
265 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
265 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
266 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
266 {rename%filelogrename}
267 {rename%filelogrename}
267 </td>
268 </td>
268 </tr>'
269 </tr>'
269 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
270 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
270 indexentry = '
271 indexentry = '
271 <tr class="parity{parity}">
272 <tr class="parity{parity}">
272 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
273 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
273 <td>{description}</td>
274 <td>{description}</td>
274 <td>{contact|obfuscate}</td>
275 <td>{contact|obfuscate}</td>
275 <td class="age">{lastchange|rfc822date}</td>
276 <td class="age">{lastchange|rfc822date}</td>
276 <td class="indexlinks">{archives%indexarchiveentry}</td>
277 <td class="indexlinks">{archives%indexarchiveentry}</td>
277 <td>
278 <td>
278 {if(isdirectory, '',
279 {if(isdirectory, '',
279 '<div class="rss_logo">
280 '<div class="rss_logo">
280 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
281 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
281 </div>'
282 </div>'
282 )}
283 )}
283 </td>
284 </td>
284 </tr>\n'
285 </tr>\n'
285 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
286 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
286 index = index.tmpl
287 index = index.tmpl
287 urlparameter = '{separator}{name}={value|urlescape}'
288 urlparameter = '{separator}{name}={value|urlescape}'
288 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
289 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
289 graph = graph.tmpl
290 graph = graph.tmpl
290 graphentry = graphentry.tmpl
291 graphentry = graphentry.tmpl
291 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
292 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
292
293
293 searchform = '
294 searchform = '
294 <form action="{url|urlescape}log">
295 <form action="{url|urlescape}log">
295 {sessionvars%hiddenformentry}
296 {sessionvars%hiddenformentry}
296 <dl class="search">
297 <dl class="search">
297 <dt><label>Search: </label></dt>
298 <dt><label>Search: </label></dt>
298 <dd><input type="text" name="rev" value="{query|escape}" /></dd>
299 <dd><input type="text" name="rev" value="{query|escape}" /></dd>
299 </dl>
300 </dl>
300 </form>'
301 </form>'
@@ -1,279 +1,280 b''
1 default = 'shortlog'
1 default = 'shortlog'
2
2
3 mimetype = 'text/html; charset={encoding}'
3 mimetype = 'text/html; charset={encoding}'
4 header = header.tmpl
4 header = header.tmpl
5 footer = footer.tmpl
5 footer = footer.tmpl
6 search = search.tmpl
6 search = search.tmpl
7
7
8 changelog = shortlog.tmpl
8 changelog = shortlog.tmpl
9 shortlog = shortlog.tmpl
9 shortlog = shortlog.tmpl
10 shortlogentry = shortlogentry.tmpl
10 shortlogentry = shortlogentry.tmpl
11 graph = graph.tmpl
11 graph = graph.tmpl
12 graphentry = graphentry.tmpl
12 graphentry = graphentry.tmpl
13 help = help.tmpl
13 help = help.tmpl
14 helptopics = helptopics.tmpl
14 helptopics = helptopics.tmpl
15
15
16 helpentry = '
16 helpentry = '
17 <tr><td>
17 <tr><td>
18 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
18 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
19 {if(basename, '{basename|escape}', '{topic|escape}')}
19 {if(basename, '{basename|escape}', '{topic|escape}')}
20 </a>
20 </a>
21 </td><td>
21 </td><td>
22 {summary|escape}
22 {summary|escape}
23 </td></tr>'
23 </td></tr>'
24
24
25 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
27 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
27 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
28 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
28 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
29 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
29 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
30 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
30 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
31 filenolink = '{file|escape} '
31 filenolink = '{file|escape} '
32 fileellipses = '...'
32 fileellipses = '...'
33 diffstatlink = diffstat.tmpl
33 diffstatlink = diffstat.tmpl
34 diffstatnolink = diffstat.tmpl
34 diffstatnolink = diffstat.tmpl
35 changelogentry = shortlogentry.tmpl
35 changelogentry = shortlogentry.tmpl
36 searchentry = shortlogentry.tmpl
36 searchentry = shortlogentry.tmpl
37 changeset = changeset.tmpl
37 changeset = changeset.tmpl
38 manifest = manifest.tmpl
38 manifest = manifest.tmpl
39
39
40 nav = '{before%naventry} {after%naventry}'
40 nav = '{before%naventry} {after%naventry}'
41 navshort = '{before%navshortentry}{after%navshortentry}'
41 navshort = '{before%navshortentry}{after%navshortentry}'
42 navgraph = '{before%navgraphentry}{after%navgraphentry}'
42 navgraph = '{before%navgraphentry}{after%navgraphentry}'
43 filenav = '{before%filenaventry}{after%filenaventry}'
43 filenav = '{before%filenaventry}{after%filenaventry}'
44
44
45 direntry = '
45 direntry = '
46 <tr class="fileline">
46 <tr class="fileline">
47 <td class="name">
47 <td class="name">
48 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">
48 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">
49 <img src="{staticurl|urlescape}coal-folder.png" alt="dir."/> {basename|escape}/
49 <img src="{staticurl|urlescape}coal-folder.png" alt="dir."/> {basename|escape}/
50 </a>
50 </a>
51 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
51 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
52 {emptydirs|escape}
52 {emptydirs|escape}
53 </a>
53 </a>
54 </td>
54 </td>
55 <td class="size"></td>
55 <td class="size"></td>
56 <td class="permissions">drwxr-xr-x</td>
56 <td class="permissions">drwxr-xr-x</td>
57 </tr>'
57 </tr>'
58
58
59 fileentry = '
59 fileentry = '
60 <tr class="fileline">
60 <tr class="fileline">
61 <td class="filename">
61 <td class="filename">
62 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">
62 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">
63 <img src="{staticurl|urlescape}coal-file.png" alt="file"/> {basename|escape}
63 <img src="{staticurl|urlescape}coal-file.png" alt="file"/> {basename|escape}
64 </a>
64 </a>
65 </td>
65 </td>
66 <td class="size">{size}</td>
66 <td class="size">{size}</td>
67 <td class="permissions">{permissions|permissions}</td>
67 <td class="permissions">{permissions|permissions}</td>
68 </tr>'
68 </tr>'
69
69
70 filerevision = filerevision.tmpl
70 filerevision = filerevision.tmpl
71 fileannotate = fileannotate.tmpl
71 fileannotate = fileannotate.tmpl
72 filediff = filediff.tmpl
72 filediff = filediff.tmpl
73 filecomparison = filecomparison.tmpl
73 filecomparison = filecomparison.tmpl
74 filelog = filelog.tmpl
74 filelog = filelog.tmpl
75 fileline = '
75 fileline = '
76 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
76 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
77 filelogentry = filelogentry.tmpl
77 filelogentry = filelogentry.tmpl
78
78
79 annotateline = '
79 annotateline = '
80 <tr id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}>
80 <tr id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}>
81 <td class="annotate parity{blockparity}">
81 <td class="annotate parity{blockparity}">
82 {if(blockhead,
82 {if(blockhead,
83 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
83 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
84 {rev}
84 {rev}
85 </a>')}
85 </a>')}
86 <div class="annotate-info">
86 <div class="annotate-info">
87 <div>
87 <div>
88 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
88 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
89 {node|short}</a>
89 {node|short}</a>
90 {desc|escape|firstline}
90 {desc|escape|firstline}
91 </div>
91 </div>
92 <div><em>{author|obfuscate}</em></div>
92 <div><em>{author|obfuscate}</em></div>
93 <div>parents: {parents%annotateparent}</div>
93 <div>parents: {parents%annotateparent}</div>
94 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
94 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
95 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
95 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
96 </div>
96 </div>
97 </td>
97 </td>
98 <td class="source followlines-btn-parent"><a href="#{lineid}">{linenumber}</a> {line|escape}</td>
98 <td class="source followlines-btn-parent"><a href="#{lineid}">{linenumber}</a> {line|escape}</td>
99 </tr>'
99 </tr>'
100 annotateparent = '
100 annotateparent = '
101 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
101 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
102 diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
102 diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
103 difflineplus = '
103 difflineplus = '
104 <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
104 <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
105 difflineminus = '
105 difflineminus = '
106 <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
106 <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
107 difflineat = '
107 difflineat = '
108 <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
108 <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
109 diffline = '
109 diffline = '
110 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
110 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
111
111
112 comparisonblock ='
112 comparisonblock ='
113 <tbody class="block">
113 <tbody class="block">
114 {lines}
114 {lines}
115 </tbody>'
115 </tbody>'
116 comparisonline = '
116 comparisonline = '
117 <tr id="{lineid}">
117 <tr id="{lineid}">
118 <td class="source {type}"><a href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
118 <td class="source {type}"><a href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
119 <td class="source {type}"><a href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
119 <td class="source {type}"><a href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
120 </tr>'
120 </tr>'
121
121
122 changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
122 changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
123
123
124 changesetparentdiff = '
124 changesetparentdiff = '
125 {changesetparent}
125 {changesetparent}
126 {ifeq(node, basenode, '(current diff)', '({difffrom})')}'
126 {ifeq(node, basenode, '(current diff)', '({difffrom})')}'
127
127
128 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
128 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
129
129
130 filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
130 filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
131 filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
131 filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
132
132
133 filerename = '{file|escape}@'
133 filerename = '{file|escape}@'
134 filelogrename = '
134 filelogrename = '
135 <span class="base">
135 <span class="base">
136 base
136 base
137 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
137 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
138 {file|escape}@{node|short}
138 {file|escape}@{node|short}
139 </a>
139 </a>
140 </span>'
140 </span>'
141 fileannotateparent = '
141 fileannotateparent = '
142 <tr>
142 <tr>
143 <td class="metatag">parent:</td>
143 <td class="metatag">parent:</td>
144 <td>
144 <td>
145 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
145 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
146 {rename%filerename}{node|short}
146 {rename%filerename}{node|short}
147 </a>
147 </a>
148 </td>
148 </td>
149 </tr>'
149 </tr>'
150 changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
150 changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
151 fileannotatechild = '
151 fileannotatechild = '
152 <tr>
152 <tr>
153 <td class="metatag">child:</td>
153 <td class="metatag">child:</td>
154 <td>
154 <td>
155 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
155 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
156 {node|short}
156 {node|short}
157 </a>
157 </a>
158 </td>
158 </td>
159 </tr>'
159 </tr>'
160 tags = tags.tmpl
160 tags = tags.tmpl
161 tagentry = '
161 tagentry = '
162 <tr class="tagEntry">
162 <tr class="tagEntry">
163 <td>
163 <td>
164 <a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">
164 <a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">
165 {tag|escape}
165 {tag|escape}
166 </a>
166 </a>
167 </td>
167 </td>
168 <td class="node">
168 <td class="node">
169 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
169 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
170 {node|short}
170 {node|short}
171 </a>
171 </a>
172 </td>
172 </td>
173 </tr>'
173 </tr>'
174 bookmarks = bookmarks.tmpl
174 bookmarks = bookmarks.tmpl
175 bookmarkentry = '
175 bookmarkentry = '
176 <tr class="tagEntry">
176 <tr class="tagEntry">
177 <td>
177 <td>
178 <a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">
178 <a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">
179 {bookmark|escape}
179 {bookmark|escape}
180 </a>
180 </a>
181 </td>
181 </td>
182 <td class="node">
182 <td class="node">
183 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
183 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
184 {node|short}
184 {node|short}
185 </a>
185 </a>
186 </td>
186 </td>
187 </tr>'
187 </tr>'
188 branches = branches.tmpl
188 branches = branches.tmpl
189 branchentry = '
189 branchentry = '
190 <tr class="tagEntry">
190 <tr class="tagEntry">
191 <td>
191 <td>
192 <a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}" class="{status}">
192 <a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}" class="{status}">
193 {branch|escape}
193 {branch|escape}
194 </a>
194 </a>
195 </td>
195 </td>
196 <td class="node">
196 <td class="node">
197 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
197 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
198 {node|short}
198 {node|short}
199 </a>
199 </a>
200 </td>
200 </td>
201 </tr>'
201 </tr>'
202 phasetag = '{ifeq(phase, 'public', '', '<span class="phase">{phase|escape}</span> ')}'
202 phasetag = '{ifeq(phase, 'public', '', '<span class="phase">{phase|escape}</span> ')}'
203 obsoletetag = '{if(obsolete, '<span class="obsolete">obsolete</span> ')}'
203 obsoletetag = '{if(obsolete, '<span class="obsolete">obsolete</span> ')}'
204 instabilitytag = '<span class="instability">{instability|escape}</span> '
204 instabilitytag = '<span class="instability">{instability|escape}</span> '
205 changelogtag = '<span class="tag">{name|escape}</span> '
205 changelogtag = '<span class="tag">{name|escape}</span> '
206 changesettag = '<span class="tag">{tag|escape}</span> '
206 changesettag = '<span class="tag">{tag|escape}</span> '
207 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
207 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
208 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
208 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
209 changelogbranchname = '<span class="branchname">{name|escape}</span> '
209 changelogbranchname = '<span class="branchname">{name|escape}</span> '
210 alltags = '{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{bookmarks%changelogtag}'
210 alltags = '{phasetag}{obsoletetag}{instabilities%instabilitytag}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{bookmarks%changelogtag}'
211
211
212 successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
212 successorlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
213 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
213 obsfatesuccessors = '{if(successors, ' as ')}{successors%successorlink}'
214 obsfateverb = '{obsfateverb(successors, markers)}'
214 obsfateverb = '{obsfateverb(successors, markers)}'
215 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
215 obsfateoperations = '{if(obsfateoperations(markers), ' using {join(obsfateoperations(markers), ', ')}')}'
216 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}'
216 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
217 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}'
217
218
218 filediffparent = '
219 filediffparent = '
219 <tr>
220 <tr>
220 <th class="parent">parent {rev}:</th>
221 <th class="parent">parent {rev}:</th>
221 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
222 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
222 </tr>'
223 </tr>'
223 filediffchild = '
224 filediffchild = '
224 <tr>
225 <tr>
225 <th class="child">child {rev}:</th>
226 <th class="child">child {rev}:</th>
226 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
227 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
227 </td>
228 </td>
228 </tr>'
229 </tr>'
229
230
230 indexentry = '
231 indexentry = '
231 <tr>
232 <tr>
232 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
233 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
233 <td>{description}</td>
234 <td>{description}</td>
234 <td>{contact|obfuscate}</td>
235 <td>{contact|obfuscate}</td>
235 <td class="age">{lastchange|rfc822date}</td>
236 <td class="age">{lastchange|rfc822date}</td>
236 <td class="indexlinks">{archives%indexarchiveentry}</td>
237 <td class="indexlinks">{archives%indexarchiveentry}</td>
237 <td>
238 <td>
238 {if(isdirectory, '',
239 {if(isdirectory, '',
239 '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed">
240 '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed">
240 <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed">
241 <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed">
241 </a>'
242 </a>'
242 )}
243 )}
243 </td>
244 </td>
244 </tr>\n'
245 </tr>\n'
245 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
246 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
246 index = index.tmpl
247 index = index.tmpl
247 archiveentry = '
248 archiveentry = '
248 <li>
249 <li>
249 <a href="{url|urlescape}archive/{symrev}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
250 <a href="{url|urlescape}archive/{symrev}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
250 </li>'
251 </li>'
251 notfound = notfound.tmpl
252 notfound = notfound.tmpl
252 error = error.tmpl
253 error = error.tmpl
253 urlparameter = '{separator}{name}={value|urlescape}'
254 urlparameter = '{separator}{name}={value|urlescape}'
254 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
255 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
255 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
256 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
256
257
257 searchform = '
258 searchform = '
258 <form class="search" action="{url|urlescape}log">
259 <form class="search" action="{url|urlescape}log">
259 {sessionvars%hiddenformentry}
260 {sessionvars%hiddenformentry}
260 <p><input name="rev" id="search1" type="text" size="30" value="{query|escape}" /></p>
261 <p><input name="rev" id="search1" type="text" size="30" value="{query|escape}" /></p>
261 <div id="hint">{searchhint}</div>
262 <div id="hint">{searchhint}</div>
262 </form>'
263 </form>'
263 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
264 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
264 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
265 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
265
266
266 diffoptsform = '
267 diffoptsform = '
267 <form id="diffopts-form"
268 <form id="diffopts-form"
268 data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
269 data-ignorews="{if(get(diffopts, 'ignorews'), '1', '0')}"
269 data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
270 data-ignorewsamount="{if(get(diffopts, 'ignorewsamount'), '1', '0')}"
270 data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
271 data-ignorewseol="{if(get(diffopts, 'ignorewseol'), '1', '0')}"
271 data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
272 data-ignoreblanklines="{if(get(diffopts, 'ignoreblanklines'), '1', '0')}">
272 <span>Ignore whitespace changes - </span>
273 <span>Ignore whitespace changes - </span>
273 <span>Everywhere:</span>
274 <span>Everywhere:</span>
274 <input id="ignorews-checkbox" type="checkbox" />
275 <input id="ignorews-checkbox" type="checkbox" />
275 <span>Within whitespace:</span>
276 <span>Within whitespace:</span>
276 <input id="ignorewsamount-checkbox" type="checkbox" />
277 <input id="ignorewsamount-checkbox" type="checkbox" />
277 <span>At end of lines:</span>
278 <span>At end of lines:</span>
278 <input id="ignorewseol-checkbox" type="checkbox" />
279 <input id="ignorewseol-checkbox" type="checkbox" />
279 </form>'
280 </form>'
@@ -1,202 +1,203 b''
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 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}'
173 obsfateusers = '{if(obsfateusers(markers), ' by {join(obsfateusers(markers)%'{user|obfuscate}', ', ')}')}'
174 obsfateentry = '{obsfateverb}{obsfateoperations}{obsfatesuccessors}{obsfateusers}'
174 filediffparent = '
175 filediffparent = '
175 <tr>
176 <tr>
176 <th class="parent">parent {rev}:</th>
177 <th class="parent">parent {rev}:</th>
177 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
178 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
178 </tr>'
179 </tr>'
179 filediffchild = '
180 filediffchild = '
180 <tr>
181 <tr>
181 <th class="child">child {rev}:</th>
182 <th class="child">child {rev}:</th>
182 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
183 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
183 </tr>'
184 </tr>'
184 indexentry = '
185 indexentry = '
185 <tr class="parity{parity}">
186 <tr class="parity{parity}">
186 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
187 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
187 <td>{description}</td>
188 <td>{description}</td>
188 <td>{contact|obfuscate}</td>
189 <td>{contact|obfuscate}</td>
189 <td class="age">{lastchange|rfc822date}</td>
190 <td class="age">{lastchange|rfc822date}</td>
190 <td class="indexlinks">
191 <td class="indexlinks">
191 <a href="{url|urlescape}rss-log">RSS</a>
192 <a href="{url|urlescape}rss-log">RSS</a>
192 <a href="{url|urlescape}atom-log">Atom</a>
193 <a href="{url|urlescape}atom-log">Atom</a>
193 {archives%archiveentry}
194 {archives%archiveentry}
194 </td>
195 </td>
195 </tr>'
196 </tr>'
196 index = index.tmpl
197 index = index.tmpl
197 archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
198 archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
198 notfound = notfound.tmpl
199 notfound = notfound.tmpl
199 error = error.tmpl
200 error = error.tmpl
200 urlparameter = '{separator}{name}={value|urlescape}'
201 urlparameter = '{separator}{name}={value|urlescape}'
201 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
202 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
202 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
203 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,1583 +1,1583 b''
1 $ cat >> $HGRCPATH << EOF
1 $ cat >> $HGRCPATH << EOF
2 > [phases]
2 > [phases]
3 > # public changeset are not obsolete
3 > # public changeset are not obsolete
4 > publish=false
4 > publish=false
5 > [ui]
5 > [ui]
6 > logtemplate="{rev}:{node|short} ({phase}{if(obsolete, ' *{obsolete}*')}{if(instabilities, ' {instabilities}')}) [{tags} {bookmarks}] {desc|firstline}{if(obsfate, " [{join(obsfate, "; ")}]")}\n"
6 > logtemplate="{rev}:{node|short} ({phase}{if(obsolete, ' *{obsolete}*')}{if(instabilities, ' {instabilities}')}) [{tags} {bookmarks}] {desc|firstline}{if(obsfate, " [{join(obsfate, "; ")}]")}\n"
7 > EOF
7 > EOF
8 $ mkcommit() {
8 $ mkcommit() {
9 > echo "$1" > "$1"
9 > echo "$1" > "$1"
10 > hg add "$1"
10 > hg add "$1"
11 > hg ci -m "add $1"
11 > hg ci -m "add $1"
12 > }
12 > }
13 $ getid() {
13 $ getid() {
14 > hg log -T "{node}\n" --hidden -r "desc('$1')"
14 > hg log -T "{node}\n" --hidden -r "desc('$1')"
15 > }
15 > }
16
16
17 $ cat > debugkeys.py <<EOF
17 $ cat > debugkeys.py <<EOF
18 > def reposetup(ui, repo):
18 > def reposetup(ui, repo):
19 > class debugkeysrepo(repo.__class__):
19 > class debugkeysrepo(repo.__class__):
20 > def listkeys(self, namespace):
20 > def listkeys(self, namespace):
21 > ui.write('listkeys %s\n' % (namespace,))
21 > ui.write('listkeys %s\n' % (namespace,))
22 > return super(debugkeysrepo, self).listkeys(namespace)
22 > return super(debugkeysrepo, self).listkeys(namespace)
23 >
23 >
24 > if repo.local():
24 > if repo.local():
25 > repo.__class__ = debugkeysrepo
25 > repo.__class__ = debugkeysrepo
26 > EOF
26 > EOF
27
27
28 $ hg init tmpa
28 $ hg init tmpa
29 $ cd tmpa
29 $ cd tmpa
30 $ mkcommit kill_me
30 $ mkcommit kill_me
31
31
32 Checking that the feature is properly disabled
32 Checking that the feature is properly disabled
33
33
34 $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
34 $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
35 abort: creating obsolete markers is not enabled on this repo
35 abort: creating obsolete markers is not enabled on this repo
36 [255]
36 [255]
37
37
38 Enabling it
38 Enabling it
39
39
40 $ cat >> $HGRCPATH << EOF
40 $ cat >> $HGRCPATH << EOF
41 > [experimental]
41 > [experimental]
42 > evolution=exchange
42 > evolution=exchange
43 > evolution.createmarkers=True
43 > evolution.createmarkers=True
44 > EOF
44 > EOF
45
45
46 Killing a single changeset without replacement
46 Killing a single changeset without replacement
47
47
48 $ hg debugobsolete 0
48 $ hg debugobsolete 0
49 abort: changeset references must be full hexadecimal node identifiers
49 abort: changeset references must be full hexadecimal node identifiers
50 [255]
50 [255]
51 $ hg debugobsolete '00'
51 $ hg debugobsolete '00'
52 abort: changeset references must be full hexadecimal node identifiers
52 abort: changeset references must be full hexadecimal node identifiers
53 [255]
53 [255]
54 $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
54 $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
55 obsoleted 1 changesets
55 obsoleted 1 changesets
56 $ hg debugobsolete
56 $ hg debugobsolete
57 97b7c2d76b1845ed3eb988cd612611e72406cef0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'babar'}
57 97b7c2d76b1845ed3eb988cd612611e72406cef0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'babar'}
58
58
59 (test that mercurial is not confused)
59 (test that mercurial is not confused)
60
60
61 $ hg up null --quiet # having 0 as parent prevents it to be hidden
61 $ hg up null --quiet # having 0 as parent prevents it to be hidden
62 $ hg tip
62 $ hg tip
63 -1:000000000000 (public) [tip ]
63 -1:000000000000 (public) [tip ]
64 $ hg up --hidden tip --quiet
64 $ hg up --hidden tip --quiet
65 updating to a hidden changeset 97b7c2d76b18
65 updating to a hidden changeset 97b7c2d76b18
66 (hidden revision '97b7c2d76b18' is pruned)
66 (hidden revision '97b7c2d76b18' is pruned)
67
67
68 Killing a single changeset with itself should fail
68 Killing a single changeset with itself should fail
69 (simple local safeguard)
69 (simple local safeguard)
70
70
71 $ hg debugobsolete `getid kill_me` `getid kill_me`
71 $ hg debugobsolete `getid kill_me` `getid kill_me`
72 abort: bad obsmarker input: in-marker cycle with 97b7c2d76b1845ed3eb988cd612611e72406cef0
72 abort: bad obsmarker input: in-marker cycle with 97b7c2d76b1845ed3eb988cd612611e72406cef0
73 [255]
73 [255]
74
74
75 $ cd ..
75 $ cd ..
76
76
77 Killing a single changeset with replacement
77 Killing a single changeset with replacement
78 (and testing the format option)
78 (and testing the format option)
79
79
80 $ hg init tmpb
80 $ hg init tmpb
81 $ cd tmpb
81 $ cd tmpb
82 $ mkcommit a
82 $ mkcommit a
83 $ mkcommit b
83 $ mkcommit b
84 $ mkcommit original_c
84 $ mkcommit original_c
85 $ hg up "desc('b')"
85 $ hg up "desc('b')"
86 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
86 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
87 $ mkcommit new_c
87 $ mkcommit new_c
88 created new head
88 created new head
89 $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden
89 $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden
90 $ hg debugobsolete --config format.obsstore-version=0 --flag 12 `getid original_c` `getid new_c` -d '121 120'
90 $ hg debugobsolete --config format.obsstore-version=0 --flag 12 `getid original_c` `getid new_c` -d '121 120'
91 obsoleted 1 changesets
91 obsoleted 1 changesets
92 $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden
92 $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden
93 2:245bde4270cd add original_c
93 2:245bde4270cd add original_c
94 $ hg debugrevlog -cd
94 $ hg debugrevlog -cd
95 # rev p1rev p2rev start end deltastart base p1 p2 rawsize totalsize compression heads chainlen
95 # rev p1rev p2rev start end deltastart base p1 p2 rawsize totalsize compression heads chainlen
96 0 -1 -1 0 59 0 0 0 0 58 58 0 1 0
96 0 -1 -1 0 59 0 0 0 0 58 58 0 1 0
97 1 0 -1 59 118 59 59 0 0 58 116 0 1 0
97 1 0 -1 59 118 59 59 0 0 58 116 0 1 0
98 2 1 -1 118 193 118 118 59 0 76 192 0 1 0
98 2 1 -1 118 193 118 118 59 0 76 192 0 1 0
99 3 1 -1 193 260 193 193 59 0 66 258 0 2 0
99 3 1 -1 193 260 193 193 59 0 66 258 0 2 0
100 $ hg debugobsolete
100 $ hg debugobsolete
101 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
101 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
102
102
103 (check for version number of the obsstore)
103 (check for version number of the obsstore)
104
104
105 $ dd bs=1 count=1 if=.hg/store/obsstore 2>/dev/null
105 $ dd bs=1 count=1 if=.hg/store/obsstore 2>/dev/null
106 \x00 (no-eol) (esc)
106 \x00 (no-eol) (esc)
107
107
108 do it again (it read the obsstore before adding new changeset)
108 do it again (it read the obsstore before adding new changeset)
109
109
110 $ hg up '.^'
110 $ hg up '.^'
111 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
111 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
112 $ mkcommit new_2_c
112 $ mkcommit new_2_c
113 created new head
113 created new head
114 $ hg debugobsolete -d '1337 0' `getid new_c` `getid new_2_c`
114 $ hg debugobsolete -d '1337 0' `getid new_c` `getid new_2_c`
115 obsoleted 1 changesets
115 obsoleted 1 changesets
116 $ hg debugobsolete
116 $ hg debugobsolete
117 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
117 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
118 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
118 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
119
119
120 Register two markers with a missing node
120 Register two markers with a missing node
121
121
122 $ hg up '.^'
122 $ hg up '.^'
123 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
123 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
124 $ mkcommit new_3_c
124 $ mkcommit new_3_c
125 created new head
125 created new head
126 $ hg debugobsolete -d '1338 0' `getid new_2_c` 1337133713371337133713371337133713371337
126 $ hg debugobsolete -d '1338 0' `getid new_2_c` 1337133713371337133713371337133713371337
127 obsoleted 1 changesets
127 obsoleted 1 changesets
128 $ hg debugobsolete -d '1339 0' 1337133713371337133713371337133713371337 `getid new_3_c`
128 $ hg debugobsolete -d '1339 0' 1337133713371337133713371337133713371337 `getid new_3_c`
129 $ hg debugobsolete
129 $ hg debugobsolete
130 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
130 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
131 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
131 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
132 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
132 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
133 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
133 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
134
134
135 Test the --index option of debugobsolete command
135 Test the --index option of debugobsolete command
136 $ hg debugobsolete --index
136 $ hg debugobsolete --index
137 0 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
137 0 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
138 1 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
138 1 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
139 2 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
139 2 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
140 3 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
140 3 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
141
141
142 Refuse pathological nullid successors
142 Refuse pathological nullid successors
143 $ hg debugobsolete -d '9001 0' 1337133713371337133713371337133713371337 0000000000000000000000000000000000000000
143 $ hg debugobsolete -d '9001 0' 1337133713371337133713371337133713371337 0000000000000000000000000000000000000000
144 transaction abort!
144 transaction abort!
145 rollback completed
145 rollback completed
146 abort: bad obsolescence marker detected: invalid successors nullid
146 abort: bad obsolescence marker detected: invalid successors nullid
147 [255]
147 [255]
148
148
149 Check that graphlog detect that a changeset is obsolete:
149 Check that graphlog detect that a changeset is obsolete:
150
150
151 $ hg log -G
151 $ hg log -G
152 @ 5:5601fb93a350 (draft) [tip ] add new_3_c
152 @ 5:5601fb93a350 (draft) [tip ] add new_3_c
153 |
153 |
154 o 1:7c3bad9141dc (draft) [ ] add b
154 o 1:7c3bad9141dc (draft) [ ] add b
155 |
155 |
156 o 0:1f0dee641bb7 (draft) [ ] add a
156 o 0:1f0dee641bb7 (draft) [ ] add a
157
157
158
158
159 check that heads does not report them
159 check that heads does not report them
160
160
161 $ hg heads
161 $ hg heads
162 5:5601fb93a350 (draft) [tip ] add new_3_c
162 5:5601fb93a350 (draft) [tip ] add new_3_c
163 $ hg heads --hidden
163 $ hg heads --hidden
164 5:5601fb93a350 (draft) [tip ] add new_3_c
164 5:5601fb93a350 (draft) [tip ] add new_3_c
165 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350]
165 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350]
166 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9]
166 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9]
167 2:245bde4270cd (draft *obsolete*) [ ] add original_c [rewritten as 3:cdbce2fbb163]
167 2:245bde4270cd (draft *obsolete*) [ ] add original_c [rewritten as 3:cdbce2fbb163]
168
168
169
169
170 check that summary does not report them
170 check that summary does not report them
171
171
172 $ hg init ../sink
172 $ hg init ../sink
173 $ echo '[paths]' >> .hg/hgrc
173 $ echo '[paths]' >> .hg/hgrc
174 $ echo 'default=../sink' >> .hg/hgrc
174 $ echo 'default=../sink' >> .hg/hgrc
175 $ hg summary --remote
175 $ hg summary --remote
176 parent: 5:5601fb93a350 tip
176 parent: 5:5601fb93a350 tip
177 add new_3_c
177 add new_3_c
178 branch: default
178 branch: default
179 commit: (clean)
179 commit: (clean)
180 update: (current)
180 update: (current)
181 phases: 3 draft
181 phases: 3 draft
182 remote: 3 outgoing
182 remote: 3 outgoing
183
183
184 $ hg summary --remote --hidden
184 $ hg summary --remote --hidden
185 parent: 5:5601fb93a350 tip
185 parent: 5:5601fb93a350 tip
186 add new_3_c
186 add new_3_c
187 branch: default
187 branch: default
188 commit: (clean)
188 commit: (clean)
189 update: 3 new changesets, 4 branch heads (merge)
189 update: 3 new changesets, 4 branch heads (merge)
190 phases: 6 draft
190 phases: 6 draft
191 remote: 3 outgoing
191 remote: 3 outgoing
192
192
193 check that various commands work well with filtering
193 check that various commands work well with filtering
194
194
195 $ hg tip
195 $ hg tip
196 5:5601fb93a350 (draft) [tip ] add new_3_c
196 5:5601fb93a350 (draft) [tip ] add new_3_c
197 $ hg log -r 6
197 $ hg log -r 6
198 abort: unknown revision '6'!
198 abort: unknown revision '6'!
199 [255]
199 [255]
200 $ hg log -r 4
200 $ hg log -r 4
201 abort: hidden revision '4' was rewritten as: 5601fb93a350!
201 abort: hidden revision '4' was rewritten as: 5601fb93a350!
202 (use --hidden to access hidden revisions)
202 (use --hidden to access hidden revisions)
203 [255]
203 [255]
204 $ hg debugrevspec 'rev(6)'
204 $ hg debugrevspec 'rev(6)'
205 $ hg debugrevspec 'rev(4)'
205 $ hg debugrevspec 'rev(4)'
206 $ hg debugrevspec 'null'
206 $ hg debugrevspec 'null'
207 -1
207 -1
208
208
209 Check that public changeset are not accounted as obsolete:
209 Check that public changeset are not accounted as obsolete:
210
210
211 $ hg --hidden phase --public 2
211 $ hg --hidden phase --public 2
212 1 new phase-divergent changesets
212 1 new phase-divergent changesets
213 $ hg log -G
213 $ hg log -G
214 @ 5:5601fb93a350 (draft phase-divergent) [tip ] add new_3_c
214 @ 5:5601fb93a350 (draft phase-divergent) [tip ] add new_3_c
215 |
215 |
216 | o 2:245bde4270cd (public) [ ] add original_c
216 | o 2:245bde4270cd (public) [ ] add original_c
217 |/
217 |/
218 o 1:7c3bad9141dc (public) [ ] add b
218 o 1:7c3bad9141dc (public) [ ] add b
219 |
219 |
220 o 0:1f0dee641bb7 (public) [ ] add a
220 o 0:1f0dee641bb7 (public) [ ] add a
221
221
222
222
223 And that bumped changeset are detected
223 And that bumped changeset are detected
224 --------------------------------------
224 --------------------------------------
225
225
226 If we didn't filtered obsolete changesets out, 3 and 4 would show up too. Also
226 If we didn't filtered obsolete changesets out, 3 and 4 would show up too. Also
227 note that the bumped changeset (5:5601fb93a350) is not a direct successor of
227 note that the bumped changeset (5:5601fb93a350) is not a direct successor of
228 the public changeset
228 the public changeset
229
229
230 $ hg log --hidden -r 'phasedivergent()'
230 $ hg log --hidden -r 'phasedivergent()'
231 5:5601fb93a350 (draft phase-divergent) [tip ] add new_3_c
231 5:5601fb93a350 (draft phase-divergent) [tip ] add new_3_c
232
232
233 And that we can't push bumped changeset
233 And that we can't push bumped changeset
234
234
235 $ hg push ../tmpa -r 0 --force #(make repo related)
235 $ hg push ../tmpa -r 0 --force #(make repo related)
236 pushing to ../tmpa
236 pushing to ../tmpa
237 searching for changes
237 searching for changes
238 warning: repository is unrelated
238 warning: repository is unrelated
239 adding changesets
239 adding changesets
240 adding manifests
240 adding manifests
241 adding file changes
241 adding file changes
242 added 1 changesets with 1 changes to 1 files (+1 heads)
242 added 1 changesets with 1 changes to 1 files (+1 heads)
243 $ hg push ../tmpa
243 $ hg push ../tmpa
244 pushing to ../tmpa
244 pushing to ../tmpa
245 searching for changes
245 searching for changes
246 abort: push includes phase-divergent changeset: 5601fb93a350!
246 abort: push includes phase-divergent changeset: 5601fb93a350!
247 [255]
247 [255]
248
248
249 Fixing "bumped" situation
249 Fixing "bumped" situation
250 We need to create a clone of 5 and add a special marker with a flag
250 We need to create a clone of 5 and add a special marker with a flag
251
251
252 $ hg summary
252 $ hg summary
253 parent: 5:5601fb93a350 tip (phase-divergent)
253 parent: 5:5601fb93a350 tip (phase-divergent)
254 add new_3_c
254 add new_3_c
255 branch: default
255 branch: default
256 commit: (clean)
256 commit: (clean)
257 update: 1 new changesets, 2 branch heads (merge)
257 update: 1 new changesets, 2 branch heads (merge)
258 phases: 1 draft
258 phases: 1 draft
259 phase-divergent: 1 changesets
259 phase-divergent: 1 changesets
260 $ hg up '5^'
260 $ hg up '5^'
261 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
261 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
262 $ hg revert -ar 5
262 $ hg revert -ar 5
263 adding new_3_c
263 adding new_3_c
264 $ hg ci -m 'add n3w_3_c'
264 $ hg ci -m 'add n3w_3_c'
265 created new head
265 created new head
266 $ hg debugobsolete -d '1338 0' --flags 1 `getid new_3_c` `getid n3w_3_c`
266 $ hg debugobsolete -d '1338 0' --flags 1 `getid new_3_c` `getid n3w_3_c`
267 obsoleted 1 changesets
267 obsoleted 1 changesets
268 $ hg log -r 'phasedivergent()'
268 $ hg log -r 'phasedivergent()'
269 $ hg log -G
269 $ hg log -G
270 @ 6:6f9641995072 (draft) [tip ] add n3w_3_c
270 @ 6:6f9641995072 (draft) [tip ] add n3w_3_c
271 |
271 |
272 | o 2:245bde4270cd (public) [ ] add original_c
272 | o 2:245bde4270cd (public) [ ] add original_c
273 |/
273 |/
274 o 1:7c3bad9141dc (public) [ ] add b
274 o 1:7c3bad9141dc (public) [ ] add b
275 |
275 |
276 o 0:1f0dee641bb7 (public) [ ] add a
276 o 0:1f0dee641bb7 (public) [ ] add a
277
277
278
278
279 Basic exclusive testing
279 Basic exclusive testing
280
280
281 $ hg log -G --hidden
281 $ hg log -G --hidden
282 @ 6:6f9641995072 (draft) [tip ] add n3w_3_c
282 @ 6:6f9641995072 (draft) [tip ] add n3w_3_c
283 |
283 |
284 | x 5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c [rewritten as 6:6f9641995072]
284 | x 5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c [rewritten as 6:6f9641995072]
285 |/
285 |/
286 | x 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350]
286 | x 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350]
287 |/
287 |/
288 | x 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9]
288 | x 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9]
289 |/
289 |/
290 | o 2:245bde4270cd (public) [ ] add original_c
290 | o 2:245bde4270cd (public) [ ] add original_c
291 |/
291 |/
292 o 1:7c3bad9141dc (public) [ ] add b
292 o 1:7c3bad9141dc (public) [ ] add b
293 |
293 |
294 o 0:1f0dee641bb7 (public) [ ] add a
294 o 0:1f0dee641bb7 (public) [ ] add a
295
295
296 $ hg debugobsolete --rev 6f9641995072
296 $ hg debugobsolete --rev 6f9641995072
297 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
297 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
298 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
298 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
299 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
299 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
300 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
300 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
301 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
301 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
302 $ hg debugobsolete --rev 6f9641995072 --exclusive
302 $ hg debugobsolete --rev 6f9641995072 --exclusive
303 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
303 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
304 $ hg debugobsolete --rev 5601fb93a350 --hidden
304 $ hg debugobsolete --rev 5601fb93a350 --hidden
305 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
305 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
306 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
306 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
307 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
307 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
308 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
308 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
309 $ hg debugobsolete --rev 5601fb93a350 --hidden --exclusive
309 $ hg debugobsolete --rev 5601fb93a350 --hidden --exclusive
310 $ hg debugobsolete --rev 5601fb93a350+6f9641995072 --hidden --exclusive
310 $ hg debugobsolete --rev 5601fb93a350+6f9641995072 --hidden --exclusive
311 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
311 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
312 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
312 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
313 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
313 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
314
314
315 $ cd ..
315 $ cd ..
316
316
317 Revision 0 is hidden
317 Revision 0 is hidden
318 --------------------
318 --------------------
319
319
320 $ hg init rev0hidden
320 $ hg init rev0hidden
321 $ cd rev0hidden
321 $ cd rev0hidden
322
322
323 $ mkcommit kill0
323 $ mkcommit kill0
324 $ hg up -q null
324 $ hg up -q null
325 $ hg debugobsolete `getid kill0`
325 $ hg debugobsolete `getid kill0`
326 obsoleted 1 changesets
326 obsoleted 1 changesets
327 $ mkcommit a
327 $ mkcommit a
328 $ mkcommit b
328 $ mkcommit b
329
329
330 Should pick the first visible revision as "repo" node
330 Should pick the first visible revision as "repo" node
331
331
332 $ hg archive ../archive-null
332 $ hg archive ../archive-null
333 $ cat ../archive-null/.hg_archival.txt
333 $ cat ../archive-null/.hg_archival.txt
334 repo: 1f0dee641bb7258c56bd60e93edfa2405381c41e
334 repo: 1f0dee641bb7258c56bd60e93edfa2405381c41e
335 node: 7c3bad9141dcb46ff89abf5f61856facd56e476c
335 node: 7c3bad9141dcb46ff89abf5f61856facd56e476c
336 branch: default
336 branch: default
337 latesttag: null
337 latesttag: null
338 latesttagdistance: 2
338 latesttagdistance: 2
339 changessincelatesttag: 2
339 changessincelatesttag: 2
340
340
341
341
342 $ cd ..
342 $ cd ..
343
343
344 Can disable transaction summary report
344 Can disable transaction summary report
345
345
346 $ hg init transaction-summary
346 $ hg init transaction-summary
347 $ cd transaction-summary
347 $ cd transaction-summary
348 $ mkcommit a
348 $ mkcommit a
349 $ mkcommit b
349 $ mkcommit b
350 $ hg up -q null
350 $ hg up -q null
351 $ hg --config experimental.evolution.report-instabilities=false debugobsolete `getid a`
351 $ hg --config experimental.evolution.report-instabilities=false debugobsolete `getid a`
352 obsoleted 1 changesets
352 obsoleted 1 changesets
353 $ cd ..
353 $ cd ..
354
354
355 Exchange Test
355 Exchange Test
356 ============================
356 ============================
357
357
358 Destination repo does not have any data
358 Destination repo does not have any data
359 ---------------------------------------
359 ---------------------------------------
360
360
361 Simple incoming test
361 Simple incoming test
362
362
363 $ hg init tmpc
363 $ hg init tmpc
364 $ cd tmpc
364 $ cd tmpc
365 $ hg incoming ../tmpb
365 $ hg incoming ../tmpb
366 comparing with ../tmpb
366 comparing with ../tmpb
367 0:1f0dee641bb7 (public) [ ] add a
367 0:1f0dee641bb7 (public) [ ] add a
368 1:7c3bad9141dc (public) [ ] add b
368 1:7c3bad9141dc (public) [ ] add b
369 2:245bde4270cd (public) [ ] add original_c
369 2:245bde4270cd (public) [ ] add original_c
370 6:6f9641995072 (draft) [tip ] add n3w_3_c
370 6:6f9641995072 (draft) [tip ] add n3w_3_c
371
371
372 Try to pull markers
372 Try to pull markers
373 (extinct changeset are excluded but marker are pushed)
373 (extinct changeset are excluded but marker are pushed)
374
374
375 $ hg pull ../tmpb
375 $ hg pull ../tmpb
376 pulling from ../tmpb
376 pulling from ../tmpb
377 requesting all changes
377 requesting all changes
378 adding changesets
378 adding changesets
379 adding manifests
379 adding manifests
380 adding file changes
380 adding file changes
381 added 4 changesets with 4 changes to 4 files (+1 heads)
381 added 4 changesets with 4 changes to 4 files (+1 heads)
382 5 new obsolescence markers
382 5 new obsolescence markers
383 new changesets 1f0dee641bb7:6f9641995072
383 new changesets 1f0dee641bb7:6f9641995072
384 (run 'hg heads' to see heads, 'hg merge' to merge)
384 (run 'hg heads' to see heads, 'hg merge' to merge)
385 $ hg debugobsolete
385 $ hg debugobsolete
386 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
386 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
387 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
387 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
388 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
388 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
389 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
389 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
390 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
390 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
391
391
392 Rollback//Transaction support
392 Rollback//Transaction support
393
393
394 $ hg debugobsolete -d '1340 0' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
394 $ hg debugobsolete -d '1340 0' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
395 $ hg debugobsolete
395 $ hg debugobsolete
396 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
396 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
397 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
397 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
398 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
398 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
399 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
399 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
400 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
400 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
401 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:22:20 1970 +0000) {'user': 'test'}
401 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:22:20 1970 +0000) {'user': 'test'}
402 $ hg rollback -n
402 $ hg rollback -n
403 repository tip rolled back to revision 3 (undo debugobsolete)
403 repository tip rolled back to revision 3 (undo debugobsolete)
404 $ hg rollback
404 $ hg rollback
405 repository tip rolled back to revision 3 (undo debugobsolete)
405 repository tip rolled back to revision 3 (undo debugobsolete)
406 $ hg debugobsolete
406 $ hg debugobsolete
407 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
407 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
408 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
408 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
409 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
409 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
410 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
410 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
411 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
411 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
412
412
413 $ cd ..
413 $ cd ..
414
414
415 Try to push markers
415 Try to push markers
416
416
417 $ hg init tmpd
417 $ hg init tmpd
418 $ hg -R tmpb push tmpd
418 $ hg -R tmpb push tmpd
419 pushing to tmpd
419 pushing to tmpd
420 searching for changes
420 searching for changes
421 adding changesets
421 adding changesets
422 adding manifests
422 adding manifests
423 adding file changes
423 adding file changes
424 added 4 changesets with 4 changes to 4 files (+1 heads)
424 added 4 changesets with 4 changes to 4 files (+1 heads)
425 5 new obsolescence markers
425 5 new obsolescence markers
426 $ hg -R tmpd debugobsolete | sort
426 $ hg -R tmpd debugobsolete | sort
427 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
427 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
428 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
428 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
429 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
429 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
430 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
430 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
431 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
431 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
432
432
433 Check obsolete keys are exchanged only if source has an obsolete store
433 Check obsolete keys are exchanged only if source has an obsolete store
434
434
435 $ hg init empty
435 $ hg init empty
436 $ hg --config extensions.debugkeys=debugkeys.py -R empty push tmpd
436 $ hg --config extensions.debugkeys=debugkeys.py -R empty push tmpd
437 pushing to tmpd
437 pushing to tmpd
438 listkeys phases
438 listkeys phases
439 listkeys bookmarks
439 listkeys bookmarks
440 no changes found
440 no changes found
441 listkeys phases
441 listkeys phases
442 [1]
442 [1]
443
443
444 clone support
444 clone support
445 (markers are copied and extinct changesets are included to allow hardlinks)
445 (markers are copied and extinct changesets are included to allow hardlinks)
446
446
447 $ hg clone tmpb clone-dest
447 $ hg clone tmpb clone-dest
448 updating to branch default
448 updating to branch default
449 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
449 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
450 $ hg -R clone-dest log -G --hidden
450 $ hg -R clone-dest log -G --hidden
451 @ 6:6f9641995072 (draft) [tip ] add n3w_3_c
451 @ 6:6f9641995072 (draft) [tip ] add n3w_3_c
452 |
452 |
453 | x 5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c [rewritten as 6:6f9641995072]
453 | x 5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c [rewritten as 6:6f9641995072]
454 |/
454 |/
455 | x 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350]
455 | x 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350]
456 |/
456 |/
457 | x 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9]
457 | x 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9]
458 |/
458 |/
459 | o 2:245bde4270cd (public) [ ] add original_c
459 | o 2:245bde4270cd (public) [ ] add original_c
460 |/
460 |/
461 o 1:7c3bad9141dc (public) [ ] add b
461 o 1:7c3bad9141dc (public) [ ] add b
462 |
462 |
463 o 0:1f0dee641bb7 (public) [ ] add a
463 o 0:1f0dee641bb7 (public) [ ] add a
464
464
465 $ hg -R clone-dest debugobsolete
465 $ hg -R clone-dest debugobsolete
466 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
466 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
467 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
467 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
468 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
468 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
469 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
469 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
470 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
470 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
471
471
472
472
473 Destination repo have existing data
473 Destination repo have existing data
474 ---------------------------------------
474 ---------------------------------------
475
475
476 On pull
476 On pull
477
477
478 $ hg init tmpe
478 $ hg init tmpe
479 $ cd tmpe
479 $ cd tmpe
480 $ hg debugobsolete -d '1339 0' 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00
480 $ hg debugobsolete -d '1339 0' 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00
481 $ hg pull ../tmpb
481 $ hg pull ../tmpb
482 pulling from ../tmpb
482 pulling from ../tmpb
483 requesting all changes
483 requesting all changes
484 adding changesets
484 adding changesets
485 adding manifests
485 adding manifests
486 adding file changes
486 adding file changes
487 added 4 changesets with 4 changes to 4 files (+1 heads)
487 added 4 changesets with 4 changes to 4 files (+1 heads)
488 5 new obsolescence markers
488 5 new obsolescence markers
489 new changesets 1f0dee641bb7:6f9641995072
489 new changesets 1f0dee641bb7:6f9641995072
490 (run 'hg heads' to see heads, 'hg merge' to merge)
490 (run 'hg heads' to see heads, 'hg merge' to merge)
491 $ hg debugobsolete
491 $ hg debugobsolete
492 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
492 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
493 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
493 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
494 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
494 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
495 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
495 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
496 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
496 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
497 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
497 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
498
498
499
499
500 On push
500 On push
501
501
502 $ hg push ../tmpc
502 $ hg push ../tmpc
503 pushing to ../tmpc
503 pushing to ../tmpc
504 searching for changes
504 searching for changes
505 no changes found
505 no changes found
506 1 new obsolescence markers
506 1 new obsolescence markers
507 [1]
507 [1]
508 $ hg -R ../tmpc debugobsolete
508 $ hg -R ../tmpc debugobsolete
509 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
509 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
510 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
510 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
511 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
511 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
512 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
512 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
513 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
513 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
514 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
514 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
515
515
516 detect outgoing obsolete and unstable
516 detect outgoing obsolete and unstable
517 ---------------------------------------
517 ---------------------------------------
518
518
519
519
520 $ hg log -G
520 $ hg log -G
521 o 3:6f9641995072 (draft) [tip ] add n3w_3_c
521 o 3:6f9641995072 (draft) [tip ] add n3w_3_c
522 |
522 |
523 | o 2:245bde4270cd (public) [ ] add original_c
523 | o 2:245bde4270cd (public) [ ] add original_c
524 |/
524 |/
525 o 1:7c3bad9141dc (public) [ ] add b
525 o 1:7c3bad9141dc (public) [ ] add b
526 |
526 |
527 o 0:1f0dee641bb7 (public) [ ] add a
527 o 0:1f0dee641bb7 (public) [ ] add a
528
528
529 $ hg up 'desc("n3w_3_c")'
529 $ hg up 'desc("n3w_3_c")'
530 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
530 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
531 $ mkcommit original_d
531 $ mkcommit original_d
532 $ mkcommit original_e
532 $ mkcommit original_e
533 $ hg debugobsolete --record-parents `getid original_d` -d '0 0'
533 $ hg debugobsolete --record-parents `getid original_d` -d '0 0'
534 obsoleted 1 changesets
534 obsoleted 1 changesets
535 1 new orphan changesets
535 1 new orphan changesets
536 $ hg debugobsolete | grep `getid original_d`
536 $ hg debugobsolete | grep `getid original_d`
537 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
537 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
538 $ hg log -r 'obsolete()'
538 $ hg log -r 'obsolete()'
539 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
539 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
540 $ hg summary
540 $ hg summary
541 parent: 5:cda648ca50f5 tip (orphan)
541 parent: 5:cda648ca50f5 tip (orphan)
542 add original_e
542 add original_e
543 branch: default
543 branch: default
544 commit: (clean)
544 commit: (clean)
545 update: 1 new changesets, 2 branch heads (merge)
545 update: 1 new changesets, 2 branch heads (merge)
546 phases: 3 draft
546 phases: 3 draft
547 orphan: 1 changesets
547 orphan: 1 changesets
548 $ hg log -G -r '::orphan()'
548 $ hg log -G -r '::orphan()'
549 @ 5:cda648ca50f5 (draft orphan) [tip ] add original_e
549 @ 5:cda648ca50f5 (draft orphan) [tip ] add original_e
550 |
550 |
551 x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
551 x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
552 |
552 |
553 o 3:6f9641995072 (draft) [ ] add n3w_3_c
553 o 3:6f9641995072 (draft) [ ] add n3w_3_c
554 |
554 |
555 o 1:7c3bad9141dc (public) [ ] add b
555 o 1:7c3bad9141dc (public) [ ] add b
556 |
556 |
557 o 0:1f0dee641bb7 (public) [ ] add a
557 o 0:1f0dee641bb7 (public) [ ] add a
558
558
559
559
560 refuse to push obsolete changeset
560 refuse to push obsolete changeset
561
561
562 $ hg push ../tmpc/ -r 'desc("original_d")'
562 $ hg push ../tmpc/ -r 'desc("original_d")'
563 pushing to ../tmpc/
563 pushing to ../tmpc/
564 searching for changes
564 searching for changes
565 abort: push includes obsolete changeset: 94b33453f93b!
565 abort: push includes obsolete changeset: 94b33453f93b!
566 [255]
566 [255]
567
567
568 refuse to push unstable changeset
568 refuse to push unstable changeset
569
569
570 $ hg push ../tmpc/
570 $ hg push ../tmpc/
571 pushing to ../tmpc/
571 pushing to ../tmpc/
572 searching for changes
572 searching for changes
573 abort: push includes orphan changeset: cda648ca50f5!
573 abort: push includes orphan changeset: cda648ca50f5!
574 [255]
574 [255]
575
575
576 Test that extinct changeset are properly detected
576 Test that extinct changeset are properly detected
577
577
578 $ hg log -r 'extinct()'
578 $ hg log -r 'extinct()'
579
579
580 Don't try to push extinct changeset
580 Don't try to push extinct changeset
581
581
582 $ hg init ../tmpf
582 $ hg init ../tmpf
583 $ hg out ../tmpf
583 $ hg out ../tmpf
584 comparing with ../tmpf
584 comparing with ../tmpf
585 searching for changes
585 searching for changes
586 0:1f0dee641bb7 (public) [ ] add a
586 0:1f0dee641bb7 (public) [ ] add a
587 1:7c3bad9141dc (public) [ ] add b
587 1:7c3bad9141dc (public) [ ] add b
588 2:245bde4270cd (public) [ ] add original_c
588 2:245bde4270cd (public) [ ] add original_c
589 3:6f9641995072 (draft) [ ] add n3w_3_c
589 3:6f9641995072 (draft) [ ] add n3w_3_c
590 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
590 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
591 5:cda648ca50f5 (draft orphan) [tip ] add original_e
591 5:cda648ca50f5 (draft orphan) [tip ] add original_e
592 $ hg push ../tmpf -f # -f because be push unstable too
592 $ hg push ../tmpf -f # -f because be push unstable too
593 pushing to ../tmpf
593 pushing to ../tmpf
594 searching for changes
594 searching for changes
595 adding changesets
595 adding changesets
596 adding manifests
596 adding manifests
597 adding file changes
597 adding file changes
598 added 6 changesets with 6 changes to 6 files (+1 heads)
598 added 6 changesets with 6 changes to 6 files (+1 heads)
599 7 new obsolescence markers
599 7 new obsolescence markers
600 1 new orphan changesets
600 1 new orphan changesets
601
601
602 no warning displayed
602 no warning displayed
603
603
604 $ hg push ../tmpf
604 $ hg push ../tmpf
605 pushing to ../tmpf
605 pushing to ../tmpf
606 searching for changes
606 searching for changes
607 no changes found
607 no changes found
608 [1]
608 [1]
609
609
610 Do not warn about new head when the new head is a successors of a remote one
610 Do not warn about new head when the new head is a successors of a remote one
611
611
612 $ hg log -G
612 $ hg log -G
613 @ 5:cda648ca50f5 (draft orphan) [tip ] add original_e
613 @ 5:cda648ca50f5 (draft orphan) [tip ] add original_e
614 |
614 |
615 x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
615 x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
616 |
616 |
617 o 3:6f9641995072 (draft) [ ] add n3w_3_c
617 o 3:6f9641995072 (draft) [ ] add n3w_3_c
618 |
618 |
619 | o 2:245bde4270cd (public) [ ] add original_c
619 | o 2:245bde4270cd (public) [ ] add original_c
620 |/
620 |/
621 o 1:7c3bad9141dc (public) [ ] add b
621 o 1:7c3bad9141dc (public) [ ] add b
622 |
622 |
623 o 0:1f0dee641bb7 (public) [ ] add a
623 o 0:1f0dee641bb7 (public) [ ] add a
624
624
625 $ hg up -q 'desc(n3w_3_c)'
625 $ hg up -q 'desc(n3w_3_c)'
626 $ mkcommit obsolete_e
626 $ mkcommit obsolete_e
627 created new head
627 created new head
628 $ hg debugobsolete `getid 'original_e'` `getid 'obsolete_e'` \
628 $ hg debugobsolete `getid 'original_e'` `getid 'obsolete_e'` \
629 > -u 'test <test@example.net>'
629 > -u 'test <test@example.net>'
630 obsoleted 1 changesets
630 obsoleted 1 changesets
631 $ hg outgoing ../tmpf # parasite hg outgoing testin
631 $ hg outgoing ../tmpf # parasite hg outgoing testin
632 comparing with ../tmpf
632 comparing with ../tmpf
633 searching for changes
633 searching for changes
634 6:3de5eca88c00 (draft) [tip ] add obsolete_e
634 6:3de5eca88c00 (draft) [tip ] add obsolete_e
635 $ hg push ../tmpf
635 $ hg push ../tmpf
636 pushing to ../tmpf
636 pushing to ../tmpf
637 searching for changes
637 searching for changes
638 adding changesets
638 adding changesets
639 adding manifests
639 adding manifests
640 adding file changes
640 adding file changes
641 added 1 changesets with 1 changes to 1 files (+1 heads)
641 added 1 changesets with 1 changes to 1 files (+1 heads)
642 1 new obsolescence markers
642 1 new obsolescence markers
643 obsoleted 1 changesets
643 obsoleted 1 changesets
644
644
645 test relevance computation
645 test relevance computation
646 ---------------------------------------
646 ---------------------------------------
647
647
648 Checking simple case of "marker relevance".
648 Checking simple case of "marker relevance".
649
649
650
650
651 Reminder of the repo situation
651 Reminder of the repo situation
652
652
653 $ hg log --hidden --graph
653 $ hg log --hidden --graph
654 @ 6:3de5eca88c00 (draft) [tip ] add obsolete_e
654 @ 6:3de5eca88c00 (draft) [tip ] add obsolete_e
655 |
655 |
656 | x 5:cda648ca50f5 (draft *obsolete*) [ ] add original_e [rewritten as 6:3de5eca88c00 by test <test@example.net>]
656 | x 5:cda648ca50f5 (draft *obsolete*) [ ] add original_e [rewritten as 6:3de5eca88c00 by test <test@example.net>]
657 | |
657 | |
658 | x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
658 | x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned]
659 |/
659 |/
660 o 3:6f9641995072 (draft) [ ] add n3w_3_c
660 o 3:6f9641995072 (draft) [ ] add n3w_3_c
661 |
661 |
662 | o 2:245bde4270cd (public) [ ] add original_c
662 | o 2:245bde4270cd (public) [ ] add original_c
663 |/
663 |/
664 o 1:7c3bad9141dc (public) [ ] add b
664 o 1:7c3bad9141dc (public) [ ] add b
665 |
665 |
666 o 0:1f0dee641bb7 (public) [ ] add a
666 o 0:1f0dee641bb7 (public) [ ] add a
667
667
668
668
669 List of all markers
669 List of all markers
670
670
671 $ hg debugobsolete
671 $ hg debugobsolete
672 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
672 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
673 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
673 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
674 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
674 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
675 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
675 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
676 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
676 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
677 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
677 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
678 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
678 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
679 cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob)
679 cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob)
680
680
681 List of changesets with no chain
681 List of changesets with no chain
682
682
683 $ hg debugobsolete --hidden --rev ::2
683 $ hg debugobsolete --hidden --rev ::2
684
684
685 List of changesets that are included on marker chain
685 List of changesets that are included on marker chain
686
686
687 $ hg debugobsolete --hidden --rev 6
687 $ hg debugobsolete --hidden --rev 6
688 cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob)
688 cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob)
689
689
690 List of changesets with a longer chain, (including a pruned children)
690 List of changesets with a longer chain, (including a pruned children)
691
691
692 $ hg debugobsolete --hidden --rev 3
692 $ hg debugobsolete --hidden --rev 3
693 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
693 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
694 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
694 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
695 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
695 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
696 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
696 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
697 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
697 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
698 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
698 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
699 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
699 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
700
700
701 List of both
701 List of both
702
702
703 $ hg debugobsolete --hidden --rev 3::6
703 $ hg debugobsolete --hidden --rev 3::6
704 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
704 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
705 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
705 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'}
706 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
706 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'}
707 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
707 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
708 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
708 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
709 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
709 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'}
710 cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob)
710 cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob)
711 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
711 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'}
712
712
713 List of all markers in JSON
713 List of all markers in JSON
714
714
715 $ hg debugobsolete -Tjson
715 $ hg debugobsolete -Tjson
716 [
716 [
717 {
717 {
718 "date": [1339.0, 0],
718 "date": [1339.0, 0],
719 "flag": 0,
719 "flag": 0,
720 "metadata": {"user": "test"},
720 "metadata": {"user": "test"},
721 "prednode": "1339133913391339133913391339133913391339",
721 "prednode": "1339133913391339133913391339133913391339",
722 "succnodes": ["ca819180edb99ed25ceafb3e9584ac287e240b00"]
722 "succnodes": ["ca819180edb99ed25ceafb3e9584ac287e240b00"]
723 },
723 },
724 {
724 {
725 "date": [1339.0, 0],
725 "date": [1339.0, 0],
726 "flag": 0,
726 "flag": 0,
727 "metadata": {"user": "test"},
727 "metadata": {"user": "test"},
728 "prednode": "1337133713371337133713371337133713371337",
728 "prednode": "1337133713371337133713371337133713371337",
729 "succnodes": ["5601fb93a350734d935195fee37f4054c529ff39"]
729 "succnodes": ["5601fb93a350734d935195fee37f4054c529ff39"]
730 },
730 },
731 {
731 {
732 "date": [121.0, 120],
732 "date": [121.0, 120],
733 "flag": 12,
733 "flag": 12,
734 "metadata": {"user": "test"},
734 "metadata": {"user": "test"},
735 "prednode": "245bde4270cd1072a27757984f9cda8ba26f08ca",
735 "prednode": "245bde4270cd1072a27757984f9cda8ba26f08ca",
736 "succnodes": ["cdbce2fbb16313928851e97e0d85413f3f7eb77f"]
736 "succnodes": ["cdbce2fbb16313928851e97e0d85413f3f7eb77f"]
737 },
737 },
738 {
738 {
739 "date": [1338.0, 0],
739 "date": [1338.0, 0],
740 "flag": 1,
740 "flag": 1,
741 "metadata": {"user": "test"},
741 "metadata": {"user": "test"},
742 "prednode": "5601fb93a350734d935195fee37f4054c529ff39",
742 "prednode": "5601fb93a350734d935195fee37f4054c529ff39",
743 "succnodes": ["6f96419950729f3671185b847352890f074f7557"]
743 "succnodes": ["6f96419950729f3671185b847352890f074f7557"]
744 },
744 },
745 {
745 {
746 "date": [1338.0, 0],
746 "date": [1338.0, 0],
747 "flag": 0,
747 "flag": 0,
748 "metadata": {"user": "test"},
748 "metadata": {"user": "test"},
749 "prednode": "ca819180edb99ed25ceafb3e9584ac287e240b00",
749 "prednode": "ca819180edb99ed25ceafb3e9584ac287e240b00",
750 "succnodes": ["1337133713371337133713371337133713371337"]
750 "succnodes": ["1337133713371337133713371337133713371337"]
751 },
751 },
752 {
752 {
753 "date": [1337.0, 0],
753 "date": [1337.0, 0],
754 "flag": 0,
754 "flag": 0,
755 "metadata": {"user": "test"},
755 "metadata": {"user": "test"},
756 "prednode": "cdbce2fbb16313928851e97e0d85413f3f7eb77f",
756 "prednode": "cdbce2fbb16313928851e97e0d85413f3f7eb77f",
757 "succnodes": ["ca819180edb99ed25ceafb3e9584ac287e240b00"]
757 "succnodes": ["ca819180edb99ed25ceafb3e9584ac287e240b00"]
758 },
758 },
759 {
759 {
760 "date": [0.0, 0],
760 "date": [0.0, 0],
761 "flag": 0,
761 "flag": 0,
762 "metadata": {"user": "test"},
762 "metadata": {"user": "test"},
763 "parentnodes": ["6f96419950729f3671185b847352890f074f7557"],
763 "parentnodes": ["6f96419950729f3671185b847352890f074f7557"],
764 "prednode": "94b33453f93bdb8d457ef9b770851a618bf413e1",
764 "prednode": "94b33453f93bdb8d457ef9b770851a618bf413e1",
765 "succnodes": []
765 "succnodes": []
766 },
766 },
767 {
767 {
768 "date": *, (glob)
768 "date": *, (glob)
769 "flag": 0,
769 "flag": 0,
770 "metadata": {"user": "test <test@example.net>"},
770 "metadata": {"user": "test <test@example.net>"},
771 "prednode": "cda648ca50f50482b7055c0b0c4c117bba6733d9",
771 "prednode": "cda648ca50f50482b7055c0b0c4c117bba6733d9",
772 "succnodes": ["3de5eca88c00aa039da7399a220f4a5221faa585"]
772 "succnodes": ["3de5eca88c00aa039da7399a220f4a5221faa585"]
773 }
773 }
774 ]
774 ]
775
775
776 Template keywords
776 Template keywords
777
777
778 $ hg debugobsolete -r6 -T '{succnodes % "{node|short}"} {date|shortdate}\n'
778 $ hg debugobsolete -r6 -T '{succnodes % "{node|short}"} {date|shortdate}\n'
779 3de5eca88c00 ????-??-?? (glob)
779 3de5eca88c00 ????-??-?? (glob)
780 $ hg debugobsolete -r6 -T '{join(metadata % "{key}={value}", " ")}\n'
780 $ hg debugobsolete -r6 -T '{join(metadata % "{key}={value}", " ")}\n'
781 user=test <test@example.net>
781 user=test <test@example.net>
782 $ hg debugobsolete -r6 -T '{metadata}\n{metadata}\n'
782 $ hg debugobsolete -r6 -T '{metadata}\n{metadata}\n'
783 'user': 'test <test@example.net>'
783 'user': 'test <test@example.net>'
784 'user': 'test <test@example.net>'
784 'user': 'test <test@example.net>'
785 $ hg debugobsolete -r6 -T '{succnodes}\n{succnodes}\n'
785 $ hg debugobsolete -r6 -T '{succnodes}\n{succnodes}\n'
786 3de5eca88c00aa039da7399a220f4a5221faa585
786 3de5eca88c00aa039da7399a220f4a5221faa585
787 3de5eca88c00aa039da7399a220f4a5221faa585
787 3de5eca88c00aa039da7399a220f4a5221faa585
788 $ hg debugobsolete -r6 -T '{flag} {get(metadata, "user")}\n'
788 $ hg debugobsolete -r6 -T '{flag} {get(metadata, "user")}\n'
789 0 test <test@example.net>
789 0 test <test@example.net>
790
790
791 Test the debug output for exchange
791 Test the debug output for exchange
792 ----------------------------------
792 ----------------------------------
793
793
794 $ hg pull ../tmpb --config 'experimental.obsmarkers-exchange-debug=True' # bundle2
794 $ hg pull ../tmpb --config 'experimental.obsmarkers-exchange-debug=True' # bundle2
795 pulling from ../tmpb
795 pulling from ../tmpb
796 searching for changes
796 searching for changes
797 no changes found
797 no changes found
798 obsmarker-exchange: 346 bytes received
798 obsmarker-exchange: 346 bytes received
799
799
800 check hgweb does not explode
800 check hgweb does not explode
801 ====================================
801 ====================================
802
802
803 $ hg unbundle $TESTDIR/bundles/hgweb+obs.hg
803 $ hg unbundle $TESTDIR/bundles/hgweb+obs.hg
804 adding changesets
804 adding changesets
805 adding manifests
805 adding manifests
806 adding file changes
806 adding file changes
807 added 62 changesets with 63 changes to 9 files (+60 heads)
807 added 62 changesets with 63 changes to 9 files (+60 heads)
808 new changesets 50c51b361e60:c15e9edfca13
808 new changesets 50c51b361e60:c15e9edfca13
809 (run 'hg heads .' to see heads, 'hg merge' to merge)
809 (run 'hg heads .' to see heads, 'hg merge' to merge)
810 $ for node in `hg log -r 'desc(babar_)' --template '{node}\n'`;
810 $ for node in `hg log -r 'desc(babar_)' --template '{node}\n'`;
811 > do
811 > do
812 > hg debugobsolete $node
812 > hg debugobsolete $node
813 > done
813 > done
814 obsoleted 1 changesets
814 obsoleted 1 changesets
815 obsoleted 1 changesets
815 obsoleted 1 changesets
816 obsoleted 1 changesets
816 obsoleted 1 changesets
817 obsoleted 1 changesets
817 obsoleted 1 changesets
818 obsoleted 1 changesets
818 obsoleted 1 changesets
819 obsoleted 1 changesets
819 obsoleted 1 changesets
820 obsoleted 1 changesets
820 obsoleted 1 changesets
821 obsoleted 1 changesets
821 obsoleted 1 changesets
822 obsoleted 1 changesets
822 obsoleted 1 changesets
823 obsoleted 1 changesets
823 obsoleted 1 changesets
824 obsoleted 1 changesets
824 obsoleted 1 changesets
825 obsoleted 1 changesets
825 obsoleted 1 changesets
826 obsoleted 1 changesets
826 obsoleted 1 changesets
827 obsoleted 1 changesets
827 obsoleted 1 changesets
828 obsoleted 1 changesets
828 obsoleted 1 changesets
829 obsoleted 1 changesets
829 obsoleted 1 changesets
830 obsoleted 1 changesets
830 obsoleted 1 changesets
831 obsoleted 1 changesets
831 obsoleted 1 changesets
832 obsoleted 1 changesets
832 obsoleted 1 changesets
833 obsoleted 1 changesets
833 obsoleted 1 changesets
834 obsoleted 1 changesets
834 obsoleted 1 changesets
835 obsoleted 1 changesets
835 obsoleted 1 changesets
836 obsoleted 1 changesets
836 obsoleted 1 changesets
837 obsoleted 1 changesets
837 obsoleted 1 changesets
838 obsoleted 1 changesets
838 obsoleted 1 changesets
839 obsoleted 1 changesets
839 obsoleted 1 changesets
840 obsoleted 1 changesets
840 obsoleted 1 changesets
841 obsoleted 1 changesets
841 obsoleted 1 changesets
842 obsoleted 1 changesets
842 obsoleted 1 changesets
843 obsoleted 1 changesets
843 obsoleted 1 changesets
844 obsoleted 1 changesets
844 obsoleted 1 changesets
845 obsoleted 1 changesets
845 obsoleted 1 changesets
846 obsoleted 1 changesets
846 obsoleted 1 changesets
847 obsoleted 1 changesets
847 obsoleted 1 changesets
848 obsoleted 1 changesets
848 obsoleted 1 changesets
849 obsoleted 1 changesets
849 obsoleted 1 changesets
850 obsoleted 1 changesets
850 obsoleted 1 changesets
851 obsoleted 1 changesets
851 obsoleted 1 changesets
852 obsoleted 1 changesets
852 obsoleted 1 changesets
853 obsoleted 1 changesets
853 obsoleted 1 changesets
854 obsoleted 1 changesets
854 obsoleted 1 changesets
855 obsoleted 1 changesets
855 obsoleted 1 changesets
856 obsoleted 1 changesets
856 obsoleted 1 changesets
857 obsoleted 1 changesets
857 obsoleted 1 changesets
858 obsoleted 1 changesets
858 obsoleted 1 changesets
859 obsoleted 1 changesets
859 obsoleted 1 changesets
860 obsoleted 1 changesets
860 obsoleted 1 changesets
861 obsoleted 1 changesets
861 obsoleted 1 changesets
862 obsoleted 1 changesets
862 obsoleted 1 changesets
863 obsoleted 1 changesets
863 obsoleted 1 changesets
864 obsoleted 1 changesets
864 obsoleted 1 changesets
865 obsoleted 1 changesets
865 obsoleted 1 changesets
866 obsoleted 1 changesets
866 obsoleted 1 changesets
867 obsoleted 1 changesets
867 obsoleted 1 changesets
868 obsoleted 1 changesets
868 obsoleted 1 changesets
869 obsoleted 1 changesets
869 obsoleted 1 changesets
870 obsoleted 1 changesets
870 obsoleted 1 changesets
871 obsoleted 1 changesets
871 obsoleted 1 changesets
872 obsoleted 1 changesets
872 obsoleted 1 changesets
873 obsoleted 1 changesets
873 obsoleted 1 changesets
874 $ hg up tip
874 $ hg up tip
875 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
875 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
876
876
877 #if serve
877 #if serve
878
878
879 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
879 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
880 $ cat hg.pid >> $DAEMON_PIDS
880 $ cat hg.pid >> $DAEMON_PIDS
881
881
882 check changelog view
882 check changelog view
883
883
884 $ get-with-headers.py --headeronly localhost:$HGPORT 'shortlog/'
884 $ get-with-headers.py --headeronly localhost:$HGPORT 'shortlog/'
885 200 Script output follows
885 200 Script output follows
886
886
887 check graph view
887 check graph view
888
888
889 $ get-with-headers.py --headeronly localhost:$HGPORT 'graph'
889 $ get-with-headers.py --headeronly localhost:$HGPORT 'graph'
890 200 Script output follows
890 200 Script output follows
891
891
892 check filelog view
892 check filelog view
893
893
894 $ get-with-headers.py --headeronly localhost:$HGPORT 'log/'`hg log -r . -T "{node}"`/'babar'
894 $ get-with-headers.py --headeronly localhost:$HGPORT 'log/'`hg log -r . -T "{node}"`/'babar'
895 200 Script output follows
895 200 Script output follows
896
896
897 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/68'
897 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/68'
898 200 Script output follows
898 200 Script output follows
899 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67'
899 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67'
900 404 Not Found
900 404 Not Found
901 [1]
901 [1]
902
902
903 check that web.view config option:
903 check that web.view config option:
904
904
905 $ killdaemons.py hg.pid
905 $ killdaemons.py hg.pid
906 $ cat >> .hg/hgrc << EOF
906 $ cat >> .hg/hgrc << EOF
907 > [web]
907 > [web]
908 > view=all
908 > view=all
909 > EOF
909 > EOF
910 $ wait
910 $ wait
911 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
911 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
912 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67'
912 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67'
913 200 Script output follows
913 200 Script output follows
914 $ killdaemons.py hg.pid
914 $ killdaemons.py hg.pid
915
915
916 Checking _enable=False warning if obsolete marker exists
916 Checking _enable=False warning if obsolete marker exists
917
917
918 $ echo '[experimental]' >> $HGRCPATH
918 $ echo '[experimental]' >> $HGRCPATH
919 $ echo "evolution=" >> $HGRCPATH
919 $ echo "evolution=" >> $HGRCPATH
920 $ hg log -r tip
920 $ hg log -r tip
921 68:c15e9edfca13 (draft) [tip ] add celestine
921 68:c15e9edfca13 (draft) [tip ] add celestine
922
922
923 reenable for later test
923 reenable for later test
924
924
925 $ echo '[experimental]' >> $HGRCPATH
925 $ echo '[experimental]' >> $HGRCPATH
926 $ echo "evolution.exchange=True" >> $HGRCPATH
926 $ echo "evolution.exchange=True" >> $HGRCPATH
927 $ echo "evolution.createmarkers=True" >> $HGRCPATH
927 $ echo "evolution.createmarkers=True" >> $HGRCPATH
928
928
929 $ rm hg.pid access.log errors.log
929 $ rm hg.pid access.log errors.log
930 #endif
930 #endif
931
931
932 Several troubles on the same changeset (create an unstable and bumped changeset)
932 Several troubles on the same changeset (create an unstable and bumped changeset)
933
933
934 $ hg debugobsolete `getid obsolete_e`
934 $ hg debugobsolete `getid obsolete_e`
935 obsoleted 1 changesets
935 obsoleted 1 changesets
936 2 new orphan changesets
936 2 new orphan changesets
937 $ hg debugobsolete `getid original_c` `getid babar`
937 $ hg debugobsolete `getid original_c` `getid babar`
938 1 new phase-divergent changesets
938 1 new phase-divergent changesets
939 $ hg log --config ui.logtemplate= -r 'phasedivergent() and orphan()'
939 $ hg log --config ui.logtemplate= -r 'phasedivergent() and orphan()'
940 changeset: 7:50c51b361e60
940 changeset: 7:50c51b361e60
941 user: test
941 user: test
942 date: Thu Jan 01 00:00:00 1970 +0000
942 date: Thu Jan 01 00:00:00 1970 +0000
943 instability: orphan, phase-divergent
943 instability: orphan, phase-divergent
944 summary: add babar
944 summary: add babar
945
945
946
946
947 test the "obsolete" templatekw
947 test the "obsolete" templatekw
948
948
949 $ hg log -r 'obsolete()'
949 $ hg log -r 'obsolete()'
950 6:3de5eca88c00 (draft *obsolete*) [ ] add obsolete_e [pruned]
950 6:3de5eca88c00 (draft *obsolete*) [ ] add obsolete_e [pruned]
951
951
952 test the "troubles" templatekw
952 test the "troubles" templatekw
953
953
954 $ hg log -r 'phasedivergent() and orphan()'
954 $ hg log -r 'phasedivergent() and orphan()'
955 7:50c51b361e60 (draft orphan phase-divergent) [ ] add babar
955 7:50c51b361e60 (draft orphan phase-divergent) [ ] add babar
956
956
957 test the default cmdline template
957 test the default cmdline template
958
958
959 $ hg log -T default -r 'phasedivergent()'
959 $ hg log -T default -r 'phasedivergent()'
960 changeset: 7:50c51b361e60
960 changeset: 7:50c51b361e60
961 user: test
961 user: test
962 date: Thu Jan 01 00:00:00 1970 +0000
962 date: Thu Jan 01 00:00:00 1970 +0000
963 instability: orphan, phase-divergent
963 instability: orphan, phase-divergent
964 summary: add babar
964 summary: add babar
965
965
966 $ hg log -T default -r 'obsolete()'
966 $ hg log -T default -r 'obsolete()'
967 changeset: 6:3de5eca88c00
967 changeset: 6:3de5eca88c00
968 parent: 3:6f9641995072
968 parent: 3:6f9641995072
969 user: test
969 user: test
970 date: Thu Jan 01 00:00:00 1970 +0000
970 date: Thu Jan 01 00:00:00 1970 +0000
971 obsolete: pruned
971 obsolete: pruned
972 summary: add obsolete_e
972 summary: add obsolete_e
973
973
974
974
975 test the obsolete labels
975 test the obsolete labels
976
976
977 $ hg log --config ui.logtemplate= --color=debug -r 'phasedivergent()'
977 $ hg log --config ui.logtemplate= --color=debug -r 'phasedivergent()'
978 [log.changeset changeset.draft changeset.unstable instability.orphan instability.phase-divergent|changeset: 7:50c51b361e60]
978 [log.changeset changeset.draft changeset.unstable instability.orphan instability.phase-divergent|changeset: 7:50c51b361e60]
979 [log.user|user: test]
979 [log.user|user: test]
980 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
980 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
981 [log.instability|instability: orphan, phase-divergent]
981 [log.instability|instability: orphan, phase-divergent]
982 [log.summary|summary: add babar]
982 [log.summary|summary: add babar]
983
983
984
984
985 $ hg log -T default -r 'phasedivergent()' --color=debug
985 $ hg log -T default -r 'phasedivergent()' --color=debug
986 [log.changeset changeset.draft changeset.unstable instability.orphan instability.phase-divergent|changeset: 7:50c51b361e60]
986 [log.changeset changeset.draft changeset.unstable instability.orphan instability.phase-divergent|changeset: 7:50c51b361e60]
987 [log.user|user: test]
987 [log.user|user: test]
988 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
988 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
989 [log.instability|instability: orphan, phase-divergent]
989 [log.instability|instability: orphan, phase-divergent]
990 [log.summary|summary: add babar]
990 [log.summary|summary: add babar]
991
991
992
992
993 $ hg log --config ui.logtemplate= --color=debug -r "obsolete()"
993 $ hg log --config ui.logtemplate= --color=debug -r "obsolete()"
994 [log.changeset changeset.draft changeset.obsolete|changeset: 6:3de5eca88c00]
994 [log.changeset changeset.draft changeset.obsolete|changeset: 6:3de5eca88c00]
995 [log.parent changeset.draft|parent: 3:6f9641995072]
995 [log.parent changeset.draft|parent: 3:6f9641995072]
996 [log.user|user: test]
996 [log.user|user: test]
997 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
997 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
998 [log.obsfate|obsolete: pruned]
998 [log.obsfate|obsolete: pruned]
999 [log.summary|summary: add obsolete_e]
999 [log.summary|summary: add obsolete_e]
1000
1000
1001
1001
1002 $ hg log -T default -r 'obsolete()' --color=debug
1002 $ hg log -T default -r 'obsolete()' --color=debug
1003 [log.changeset changeset.draft changeset.obsolete|changeset: 6:3de5eca88c00]
1003 [log.changeset changeset.draft changeset.obsolete|changeset: 6:3de5eca88c00]
1004 [log.parent changeset.draft|parent: 3:6f9641995072]
1004 [log.parent changeset.draft|parent: 3:6f9641995072]
1005 [log.user|user: test]
1005 [log.user|user: test]
1006 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
1006 [log.date|date: Thu Jan 01 00:00:00 1970 +0000]
1007 [log.obsfate|obsolete: pruned]
1007 [log.obsfate|obsolete: pruned]
1008 [log.summary|summary: add obsolete_e]
1008 [log.summary|summary: add obsolete_e]
1009
1009
1010
1010
1011 test summary output
1011 test summary output
1012
1012
1013 $ hg up -r 'phasedivergent() and orphan()'
1013 $ hg up -r 'phasedivergent() and orphan()'
1014 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1014 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1015 $ hg summary
1015 $ hg summary
1016 parent: 7:50c51b361e60 (orphan, phase-divergent)
1016 parent: 7:50c51b361e60 (orphan, phase-divergent)
1017 add babar
1017 add babar
1018 branch: default
1018 branch: default
1019 commit: (clean)
1019 commit: (clean)
1020 update: 2 new changesets (update)
1020 update: 2 new changesets (update)
1021 phases: 4 draft
1021 phases: 4 draft
1022 orphan: 2 changesets
1022 orphan: 2 changesets
1023 phase-divergent: 1 changesets
1023 phase-divergent: 1 changesets
1024 $ hg up -r 'obsolete()'
1024 $ hg up -r 'obsolete()'
1025 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1025 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1026 $ hg summary
1026 $ hg summary
1027 parent: 6:3de5eca88c00 (obsolete)
1027 parent: 6:3de5eca88c00 (obsolete)
1028 add obsolete_e
1028 add obsolete_e
1029 branch: default
1029 branch: default
1030 commit: (clean)
1030 commit: (clean)
1031 update: 3 new changesets (update)
1031 update: 3 new changesets (update)
1032 phases: 4 draft
1032 phases: 4 draft
1033 orphan: 2 changesets
1033 orphan: 2 changesets
1034 phase-divergent: 1 changesets
1034 phase-divergent: 1 changesets
1035
1035
1036 #if serve
1036 #if serve
1037
1037
1038 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
1038 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
1039 $ cat hg.pid >> $DAEMON_PIDS
1039 $ cat hg.pid >> $DAEMON_PIDS
1040
1040
1041 check obsolete changeset
1041 check obsolete changeset
1042
1042
1043 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=paper' | grep '<span class="obsolete">'
1043 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=paper' | grep '<span class="obsolete">'
1044 <span class="phase">draft</span> <span class="obsolete">obsolete</span>
1044 <span class="phase">draft</span> <span class="obsolete">obsolete</span>
1045 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=coal' | grep '<span class="obsolete">'
1045 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=coal' | grep '<span class="obsolete">'
1046 <span class="phase">draft</span> <span class="obsolete">obsolete</span>
1046 <span class="phase">draft</span> <span class="obsolete">obsolete</span>
1047 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=gitweb' | grep '<span class="logtags">'
1047 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=gitweb' | grep '<span class="logtags">'
1048 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="obsoletetag" title="obsolete">obsolete</span> </span>
1048 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="obsoletetag" title="obsolete">obsolete</span> </span>
1049 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=monoblue' | grep '<span class="logtags">'
1049 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=monoblue' | grep '<span class="logtags">'
1050 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="obsoletetag" title="obsolete">obsolete</span> </span>
1050 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="obsoletetag" title="obsolete">obsolete</span> </span>
1051 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=spartan' | grep 'class="obsolete"'
1051 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=spartan' | grep 'class="obsolete"'
1052 <th class="obsolete">obsolete:</th>
1052 <th class="obsolete">obsolete:</th>
1053 <td class="obsolete">pruned</td>
1053 <td class="obsolete">pruned by &#116;&#101;&#115;&#116;</td>
1054
1054
1055 check an obsolete changeset that has been rewritten
1055 check an obsolete changeset that has been rewritten
1056 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=paper' | grep rewritten
1056 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=paper' | grep rewritten
1057 <td>rewritten as <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a> </td>
1057 <td>rewritten as <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a> by &#116;&#101;&#115;&#116;&#32;&#60;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;&#62;</td>
1058 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=coal' | grep rewritten
1058 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=coal' | grep rewritten
1059 <td>rewritten as <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a> </td>
1059 <td>rewritten as <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a> by &#116;&#101;&#115;&#116;&#32;&#60;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;&#62;</td>
1060 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=gitweb' | grep rewritten
1060 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=gitweb' | grep rewritten
1061 <tr><td>obsolete</td><td>rewritten as <a class="list" href="/rev/3de5eca88c00?style=gitweb">3de5eca88c00</a> </td></tr>
1061 <tr><td>obsolete</td><td>rewritten as <a class="list" href="/rev/3de5eca88c00?style=gitweb">3de5eca88c00</a> by &#116;&#101;&#115;&#116;&#32;&#60;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;&#62;</td></tr>
1062 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=monoblue' | grep rewritten
1062 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=monoblue' | grep rewritten
1063 <dt>obsolete</dt><dd>rewritten as <a href="/rev/3de5eca88c00?style=monoblue">3de5eca88c00</a> </dd>
1063 <dt>obsolete</dt><dd>rewritten as <a href="/rev/3de5eca88c00?style=monoblue">3de5eca88c00</a> by &#116;&#101;&#115;&#116;&#32;&#60;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;&#62;</dd>
1064 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=spartan' | grep rewritten
1064 $ get-with-headers.py localhost:$HGPORT 'rev/cda648ca50f5?style=spartan' | grep rewritten
1065 <td class="obsolete">rewritten as <a href="/rev/3de5eca88c00?style=spartan">3de5eca88c00</a> </td>
1065 <td class="obsolete">rewritten as <a href="/rev/3de5eca88c00?style=spartan">3de5eca88c00</a> by &#116;&#101;&#115;&#116;&#32;&#60;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;&#62;</td>
1066
1066
1067 check changeset with instabilities
1067 check changeset with instabilities
1068
1068
1069 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=paper' | grep '<span class="instability">'
1069 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=paper' | grep '<span class="instability">'
1070 <span class="phase">draft</span> <span class="instability">orphan</span> <span class="instability">phase-divergent</span>
1070 <span class="phase">draft</span> <span class="instability">orphan</span> <span class="instability">phase-divergent</span>
1071 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=coal' | grep '<span class="instability">'
1071 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=coal' | grep '<span class="instability">'
1072 <span class="phase">draft</span> <span class="instability">orphan</span> <span class="instability">phase-divergent</span>
1072 <span class="phase">draft</span> <span class="instability">orphan</span> <span class="instability">phase-divergent</span>
1073 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=gitweb' | grep '<span class="logtags">'
1073 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=gitweb' | grep '<span class="logtags">'
1074 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="instabilitytag" title="orphan">orphan</span> <span class="instabilitytag" title="phase-divergent">phase-divergent</span> </span>
1074 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="instabilitytag" title="orphan">orphan</span> <span class="instabilitytag" title="phase-divergent">phase-divergent</span> </span>
1075 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=monoblue' | grep '<span class="logtags">'
1075 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=monoblue' | grep '<span class="logtags">'
1076 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="instabilitytag" title="orphan">orphan</span> <span class="instabilitytag" title="phase-divergent">phase-divergent</span> </span>
1076 <span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="instabilitytag" title="orphan">orphan</span> <span class="instabilitytag" title="phase-divergent">phase-divergent</span> </span>
1077 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=spartan' | grep 'class="instabilities"'
1077 $ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=spartan' | grep 'class="instabilities"'
1078 <th class="instabilities">instabilities:</th>
1078 <th class="instabilities">instabilities:</th>
1079 <td class="instabilities">orphan phase-divergent </td>
1079 <td class="instabilities">orphan phase-divergent </td>
1080
1080
1081 $ killdaemons.py
1081 $ killdaemons.py
1082
1082
1083 $ rm hg.pid access.log errors.log
1083 $ rm hg.pid access.log errors.log
1084 #endif
1084 #endif
1085
1085
1086 Test incoming/outcoming with changesets obsoleted remotely, known locally
1086 Test incoming/outcoming with changesets obsoleted remotely, known locally
1087 ===============================================================================
1087 ===============================================================================
1088
1088
1089 This test issue 3805
1089 This test issue 3805
1090
1090
1091 $ hg init repo-issue3805
1091 $ hg init repo-issue3805
1092 $ cd repo-issue3805
1092 $ cd repo-issue3805
1093 $ echo "base" > base
1093 $ echo "base" > base
1094 $ hg ci -Am "base"
1094 $ hg ci -Am "base"
1095 adding base
1095 adding base
1096 $ echo "foo" > foo
1096 $ echo "foo" > foo
1097 $ hg ci -Am "A"
1097 $ hg ci -Am "A"
1098 adding foo
1098 adding foo
1099 $ hg clone . ../other-issue3805
1099 $ hg clone . ../other-issue3805
1100 updating to branch default
1100 updating to branch default
1101 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1101 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1102 $ echo "bar" >> foo
1102 $ echo "bar" >> foo
1103 $ hg ci --amend
1103 $ hg ci --amend
1104 $ cd ../other-issue3805
1104 $ cd ../other-issue3805
1105 $ hg log -G
1105 $ hg log -G
1106 @ 1:29f0c6921ddd (draft) [tip ] A
1106 @ 1:29f0c6921ddd (draft) [tip ] A
1107 |
1107 |
1108 o 0:d20a80d4def3 (draft) [ ] base
1108 o 0:d20a80d4def3 (draft) [ ] base
1109
1109
1110 $ hg log -G -R ../repo-issue3805
1110 $ hg log -G -R ../repo-issue3805
1111 @ 2:323a9c3ddd91 (draft) [tip ] A
1111 @ 2:323a9c3ddd91 (draft) [tip ] A
1112 |
1112 |
1113 o 0:d20a80d4def3 (draft) [ ] base
1113 o 0:d20a80d4def3 (draft) [ ] base
1114
1114
1115 $ hg incoming
1115 $ hg incoming
1116 comparing with $TESTTMP/tmpe/repo-issue3805
1116 comparing with $TESTTMP/tmpe/repo-issue3805
1117 searching for changes
1117 searching for changes
1118 2:323a9c3ddd91 (draft) [tip ] A
1118 2:323a9c3ddd91 (draft) [tip ] A
1119 $ hg incoming --bundle ../issue3805.hg
1119 $ hg incoming --bundle ../issue3805.hg
1120 comparing with $TESTTMP/tmpe/repo-issue3805
1120 comparing with $TESTTMP/tmpe/repo-issue3805
1121 searching for changes
1121 searching for changes
1122 2:323a9c3ddd91 (draft) [tip ] A
1122 2:323a9c3ddd91 (draft) [tip ] A
1123 $ hg outgoing
1123 $ hg outgoing
1124 comparing with $TESTTMP/tmpe/repo-issue3805
1124 comparing with $TESTTMP/tmpe/repo-issue3805
1125 searching for changes
1125 searching for changes
1126 1:29f0c6921ddd (draft) [tip ] A
1126 1:29f0c6921ddd (draft) [tip ] A
1127
1127
1128 #if serve
1128 #if serve
1129
1129
1130 $ hg serve -R ../repo-issue3805 -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
1130 $ hg serve -R ../repo-issue3805 -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
1131 $ cat hg.pid >> $DAEMON_PIDS
1131 $ cat hg.pid >> $DAEMON_PIDS
1132
1132
1133 $ hg incoming http://localhost:$HGPORT
1133 $ hg incoming http://localhost:$HGPORT
1134 comparing with http://localhost:$HGPORT/
1134 comparing with http://localhost:$HGPORT/
1135 searching for changes
1135 searching for changes
1136 2:323a9c3ddd91 (draft) [tip ] A
1136 2:323a9c3ddd91 (draft) [tip ] A
1137 $ hg outgoing http://localhost:$HGPORT
1137 $ hg outgoing http://localhost:$HGPORT
1138 comparing with http://localhost:$HGPORT/
1138 comparing with http://localhost:$HGPORT/
1139 searching for changes
1139 searching for changes
1140 1:29f0c6921ddd (draft) [tip ] A
1140 1:29f0c6921ddd (draft) [tip ] A
1141
1141
1142 $ killdaemons.py
1142 $ killdaemons.py
1143
1143
1144 #endif
1144 #endif
1145
1145
1146 This test issue 3814
1146 This test issue 3814
1147
1147
1148 (nothing to push but locally hidden changeset)
1148 (nothing to push but locally hidden changeset)
1149
1149
1150 $ cd ..
1150 $ cd ..
1151 $ hg init repo-issue3814
1151 $ hg init repo-issue3814
1152 $ cd repo-issue3805
1152 $ cd repo-issue3805
1153 $ hg push -r 323a9c3ddd91 ../repo-issue3814
1153 $ hg push -r 323a9c3ddd91 ../repo-issue3814
1154 pushing to ../repo-issue3814
1154 pushing to ../repo-issue3814
1155 searching for changes
1155 searching for changes
1156 adding changesets
1156 adding changesets
1157 adding manifests
1157 adding manifests
1158 adding file changes
1158 adding file changes
1159 added 2 changesets with 2 changes to 2 files
1159 added 2 changesets with 2 changes to 2 files
1160 1 new obsolescence markers
1160 1 new obsolescence markers
1161 $ hg out ../repo-issue3814
1161 $ hg out ../repo-issue3814
1162 comparing with ../repo-issue3814
1162 comparing with ../repo-issue3814
1163 searching for changes
1163 searching for changes
1164 no changes found
1164 no changes found
1165 [1]
1165 [1]
1166
1166
1167 Test that a local tag blocks a changeset from being hidden
1167 Test that a local tag blocks a changeset from being hidden
1168
1168
1169 $ hg tag -l visible -r 1 --hidden
1169 $ hg tag -l visible -r 1 --hidden
1170 $ hg log -G
1170 $ hg log -G
1171 @ 2:323a9c3ddd91 (draft) [tip ] A
1171 @ 2:323a9c3ddd91 (draft) [tip ] A
1172 |
1172 |
1173 | x 1:29f0c6921ddd (draft *obsolete*) [visible ] A [rewritten using amend as 2:323a9c3ddd91]
1173 | x 1:29f0c6921ddd (draft *obsolete*) [visible ] A [rewritten using amend as 2:323a9c3ddd91]
1174 |/
1174 |/
1175 o 0:d20a80d4def3 (draft) [ ] base
1175 o 0:d20a80d4def3 (draft) [ ] base
1176
1176
1177 Test that removing a local tag does not cause some commands to fail
1177 Test that removing a local tag does not cause some commands to fail
1178
1178
1179 $ hg tag -l -r tip tiptag
1179 $ hg tag -l -r tip tiptag
1180 $ hg tags
1180 $ hg tags
1181 tiptag 2:323a9c3ddd91
1181 tiptag 2:323a9c3ddd91
1182 tip 2:323a9c3ddd91
1182 tip 2:323a9c3ddd91
1183 visible 1:29f0c6921ddd
1183 visible 1:29f0c6921ddd
1184 $ hg --config extensions.strip= strip -r tip --no-backup
1184 $ hg --config extensions.strip= strip -r tip --no-backup
1185 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1185 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1186 $ hg tags
1186 $ hg tags
1187 visible 1:29f0c6921ddd
1187 visible 1:29f0c6921ddd
1188 tip 1:29f0c6921ddd
1188 tip 1:29f0c6921ddd
1189
1189
1190 Test bundle overlay onto hidden revision
1190 Test bundle overlay onto hidden revision
1191
1191
1192 $ cd ..
1192 $ cd ..
1193 $ hg init repo-bundleoverlay
1193 $ hg init repo-bundleoverlay
1194 $ cd repo-bundleoverlay
1194 $ cd repo-bundleoverlay
1195 $ echo "A" > foo
1195 $ echo "A" > foo
1196 $ hg ci -Am "A"
1196 $ hg ci -Am "A"
1197 adding foo
1197 adding foo
1198 $ echo "B" >> foo
1198 $ echo "B" >> foo
1199 $ hg ci -m "B"
1199 $ hg ci -m "B"
1200 $ hg up 0
1200 $ hg up 0
1201 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1201 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1202 $ echo "C" >> foo
1202 $ echo "C" >> foo
1203 $ hg ci -m "C"
1203 $ hg ci -m "C"
1204 created new head
1204 created new head
1205 $ hg log -G
1205 $ hg log -G
1206 @ 2:c186d7714947 (draft) [tip ] C
1206 @ 2:c186d7714947 (draft) [tip ] C
1207 |
1207 |
1208 | o 1:44526ebb0f98 (draft) [ ] B
1208 | o 1:44526ebb0f98 (draft) [ ] B
1209 |/
1209 |/
1210 o 0:4b34ecfb0d56 (draft) [ ] A
1210 o 0:4b34ecfb0d56 (draft) [ ] A
1211
1211
1212
1212
1213 $ hg clone -r1 . ../other-bundleoverlay
1213 $ hg clone -r1 . ../other-bundleoverlay
1214 adding changesets
1214 adding changesets
1215 adding manifests
1215 adding manifests
1216 adding file changes
1216 adding file changes
1217 added 2 changesets with 2 changes to 1 files
1217 added 2 changesets with 2 changes to 1 files
1218 new changesets 4b34ecfb0d56:44526ebb0f98
1218 new changesets 4b34ecfb0d56:44526ebb0f98
1219 updating to branch default
1219 updating to branch default
1220 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1220 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1221 $ cd ../other-bundleoverlay
1221 $ cd ../other-bundleoverlay
1222 $ echo "B+" >> foo
1222 $ echo "B+" >> foo
1223 $ hg ci --amend -m "B+"
1223 $ hg ci --amend -m "B+"
1224 $ hg log -G --hidden
1224 $ hg log -G --hidden
1225 @ 2:b7d587542d40 (draft) [tip ] B+
1225 @ 2:b7d587542d40 (draft) [tip ] B+
1226 |
1226 |
1227 | x 1:44526ebb0f98 (draft *obsolete*) [ ] B [rewritten using amend as 2:b7d587542d40]
1227 | x 1:44526ebb0f98 (draft *obsolete*) [ ] B [rewritten using amend as 2:b7d587542d40]
1228 |/
1228 |/
1229 o 0:4b34ecfb0d56 (draft) [ ] A
1229 o 0:4b34ecfb0d56 (draft) [ ] A
1230
1230
1231
1231
1232 $ hg incoming ../repo-bundleoverlay --bundle ../bundleoverlay.hg
1232 $ hg incoming ../repo-bundleoverlay --bundle ../bundleoverlay.hg
1233 comparing with ../repo-bundleoverlay
1233 comparing with ../repo-bundleoverlay
1234 searching for changes
1234 searching for changes
1235 1:44526ebb0f98 (draft) [ ] B
1235 1:44526ebb0f98 (draft) [ ] B
1236 2:c186d7714947 (draft) [tip ] C
1236 2:c186d7714947 (draft) [tip ] C
1237 $ hg log -G -R ../bundleoverlay.hg
1237 $ hg log -G -R ../bundleoverlay.hg
1238 o 3:c186d7714947 (draft) [tip ] C
1238 o 3:c186d7714947 (draft) [tip ] C
1239 |
1239 |
1240 | @ 2:b7d587542d40 (draft) [ ] B+
1240 | @ 2:b7d587542d40 (draft) [ ] B+
1241 |/
1241 |/
1242 o 0:4b34ecfb0d56 (draft) [ ] A
1242 o 0:4b34ecfb0d56 (draft) [ ] A
1243
1243
1244
1244
1245 #if serve
1245 #if serve
1246
1246
1247 Test issue 4506
1247 Test issue 4506
1248
1248
1249 $ cd ..
1249 $ cd ..
1250 $ hg init repo-issue4506
1250 $ hg init repo-issue4506
1251 $ cd repo-issue4506
1251 $ cd repo-issue4506
1252 $ echo "0" > foo
1252 $ echo "0" > foo
1253 $ hg add foo
1253 $ hg add foo
1254 $ hg ci -m "content-0"
1254 $ hg ci -m "content-0"
1255
1255
1256 $ hg up null
1256 $ hg up null
1257 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1257 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1258 $ echo "1" > bar
1258 $ echo "1" > bar
1259 $ hg add bar
1259 $ hg add bar
1260 $ hg ci -m "content-1"
1260 $ hg ci -m "content-1"
1261 created new head
1261 created new head
1262 $ hg up 0
1262 $ hg up 0
1263 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1263 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1264 $ hg graft 1
1264 $ hg graft 1
1265 grafting 1:1c9eddb02162 "content-1" (tip)
1265 grafting 1:1c9eddb02162 "content-1" (tip)
1266
1266
1267 $ hg debugobsolete `hg log -r1 -T'{node}'` `hg log -r2 -T'{node}'`
1267 $ hg debugobsolete `hg log -r1 -T'{node}'` `hg log -r2 -T'{node}'`
1268 obsoleted 1 changesets
1268 obsoleted 1 changesets
1269
1269
1270 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
1270 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
1271 $ cat hg.pid >> $DAEMON_PIDS
1271 $ cat hg.pid >> $DAEMON_PIDS
1272
1272
1273 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/1'
1273 $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/1'
1274 404 Not Found
1274 404 Not Found
1275 [1]
1275 [1]
1276 $ get-with-headers.py --headeronly localhost:$HGPORT 'file/tip/bar'
1276 $ get-with-headers.py --headeronly localhost:$HGPORT 'file/tip/bar'
1277 200 Script output follows
1277 200 Script output follows
1278 $ get-with-headers.py --headeronly localhost:$HGPORT 'annotate/tip/bar'
1278 $ get-with-headers.py --headeronly localhost:$HGPORT 'annotate/tip/bar'
1279 200 Script output follows
1279 200 Script output follows
1280
1280
1281 $ killdaemons.py
1281 $ killdaemons.py
1282
1282
1283 #endif
1283 #endif
1284
1284
1285 Test heads computation on pending index changes with obsolescence markers
1285 Test heads computation on pending index changes with obsolescence markers
1286 $ cd ..
1286 $ cd ..
1287 $ cat >$TESTTMP/test_extension.py << EOF
1287 $ cat >$TESTTMP/test_extension.py << EOF
1288 > from __future__ import absolute_import
1288 > from __future__ import absolute_import
1289 > from mercurial.i18n import _
1289 > from mercurial.i18n import _
1290 > from mercurial import cmdutil, registrar
1290 > from mercurial import cmdutil, registrar
1291 >
1291 >
1292 > cmdtable = {}
1292 > cmdtable = {}
1293 > command = registrar.command(cmdtable)
1293 > command = registrar.command(cmdtable)
1294 > @command(b"amendtransient",[], _('hg amendtransient [rev]'))
1294 > @command(b"amendtransient",[], _('hg amendtransient [rev]'))
1295 > def amend(ui, repo, *pats, **opts):
1295 > def amend(ui, repo, *pats, **opts):
1296 > opts['message'] = 'Test'
1296 > opts['message'] = 'Test'
1297 > opts['logfile'] = None
1297 > opts['logfile'] = None
1298 > cmdutil.amend(ui, repo, repo['.'], {}, pats, opts)
1298 > cmdutil.amend(ui, repo, repo['.'], {}, pats, opts)
1299 > ui.write('%s\n' % repo.changelog.headrevs())
1299 > ui.write('%s\n' % repo.changelog.headrevs())
1300 > EOF
1300 > EOF
1301 $ cat >> $HGRCPATH << EOF
1301 $ cat >> $HGRCPATH << EOF
1302 > [extensions]
1302 > [extensions]
1303 > testextension=$TESTTMP/test_extension.py
1303 > testextension=$TESTTMP/test_extension.py
1304 > EOF
1304 > EOF
1305 $ hg init repo-issue-nativerevs-pending-changes
1305 $ hg init repo-issue-nativerevs-pending-changes
1306 $ cd repo-issue-nativerevs-pending-changes
1306 $ cd repo-issue-nativerevs-pending-changes
1307 $ mkcommit a
1307 $ mkcommit a
1308 $ mkcommit b
1308 $ mkcommit b
1309 $ hg up ".^"
1309 $ hg up ".^"
1310 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1310 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1311 $ echo aa > a
1311 $ echo aa > a
1312 $ hg amendtransient
1312 $ hg amendtransient
1313 1 new orphan changesets
1313 1 new orphan changesets
1314 [1, 2]
1314 [1, 2]
1315
1315
1316 Test cache consistency for the visible filter
1316 Test cache consistency for the visible filter
1317 1) We want to make sure that the cached filtered revs are invalidated when
1317 1) We want to make sure that the cached filtered revs are invalidated when
1318 bookmarks change
1318 bookmarks change
1319 $ cd ..
1319 $ cd ..
1320 $ cat >$TESTTMP/test_extension.py << EOF
1320 $ cat >$TESTTMP/test_extension.py << EOF
1321 > from __future__ import absolute_import, print_function
1321 > from __future__ import absolute_import, print_function
1322 > import weakref
1322 > import weakref
1323 > from mercurial import (
1323 > from mercurial import (
1324 > bookmarks,
1324 > bookmarks,
1325 > cmdutil,
1325 > cmdutil,
1326 > extensions,
1326 > extensions,
1327 > repoview,
1327 > repoview,
1328 > )
1328 > )
1329 > def _bookmarkchanged(orig, bkmstoreinst, *args, **kwargs):
1329 > def _bookmarkchanged(orig, bkmstoreinst, *args, **kwargs):
1330 > reporef = weakref.ref(bkmstoreinst._repo)
1330 > reporef = weakref.ref(bkmstoreinst._repo)
1331 > def trhook(tr):
1331 > def trhook(tr):
1332 > repo = reporef()
1332 > repo = reporef()
1333 > hidden1 = repoview.computehidden(repo)
1333 > hidden1 = repoview.computehidden(repo)
1334 > hidden = repoview.filterrevs(repo, 'visible')
1334 > hidden = repoview.filterrevs(repo, 'visible')
1335 > if sorted(hidden1) != sorted(hidden):
1335 > if sorted(hidden1) != sorted(hidden):
1336 > print("cache inconsistency")
1336 > print("cache inconsistency")
1337 > bkmstoreinst._repo.currenttransaction().addpostclose('test_extension', trhook)
1337 > bkmstoreinst._repo.currenttransaction().addpostclose('test_extension', trhook)
1338 > orig(bkmstoreinst, *args, **kwargs)
1338 > orig(bkmstoreinst, *args, **kwargs)
1339 > def extsetup(ui):
1339 > def extsetup(ui):
1340 > extensions.wrapfunction(bookmarks.bmstore, '_recordchange',
1340 > extensions.wrapfunction(bookmarks.bmstore, '_recordchange',
1341 > _bookmarkchanged)
1341 > _bookmarkchanged)
1342 > EOF
1342 > EOF
1343
1343
1344 $ hg init repo-cache-inconsistency
1344 $ hg init repo-cache-inconsistency
1345 $ cd repo-issue-nativerevs-pending-changes
1345 $ cd repo-issue-nativerevs-pending-changes
1346 $ mkcommit a
1346 $ mkcommit a
1347 a already tracked!
1347 a already tracked!
1348 $ mkcommit b
1348 $ mkcommit b
1349 $ hg id
1349 $ hg id
1350 13bedc178fce tip
1350 13bedc178fce tip
1351 $ echo "hello" > b
1351 $ echo "hello" > b
1352 $ hg commit --amend -m "message"
1352 $ hg commit --amend -m "message"
1353 $ hg book bookb -r 13bedc178fce --hidden
1353 $ hg book bookb -r 13bedc178fce --hidden
1354 bookmarking hidden changeset 13bedc178fce
1354 bookmarking hidden changeset 13bedc178fce
1355 (hidden revision '13bedc178fce' was rewritten as: a9b1f8652753)
1355 (hidden revision '13bedc178fce' was rewritten as: a9b1f8652753)
1356 $ hg log -r 13bedc178fce
1356 $ hg log -r 13bedc178fce
1357 4:13bedc178fce (draft *obsolete*) [ bookb] add b [rewritten using amend as 5:a9b1f8652753]
1357 4:13bedc178fce (draft *obsolete*) [ bookb] add b [rewritten using amend as 5:a9b1f8652753]
1358 $ hg book -d bookb
1358 $ hg book -d bookb
1359 $ hg log -r 13bedc178fce
1359 $ hg log -r 13bedc178fce
1360 abort: hidden revision '13bedc178fce' was rewritten as: a9b1f8652753!
1360 abort: hidden revision '13bedc178fce' was rewritten as: a9b1f8652753!
1361 (use --hidden to access hidden revisions)
1361 (use --hidden to access hidden revisions)
1362 [255]
1362 [255]
1363
1363
1364 Empty out the test extension, as it isn't compatible with later parts
1364 Empty out the test extension, as it isn't compatible with later parts
1365 of the test.
1365 of the test.
1366 $ echo > $TESTTMP/test_extension.py
1366 $ echo > $TESTTMP/test_extension.py
1367
1367
1368 Test ability to pull changeset with locally applying obsolescence markers
1368 Test ability to pull changeset with locally applying obsolescence markers
1369 (issue4945)
1369 (issue4945)
1370
1370
1371 $ cd ..
1371 $ cd ..
1372 $ hg init issue4845
1372 $ hg init issue4845
1373 $ cd issue4845
1373 $ cd issue4845
1374
1374
1375 $ echo foo > f0
1375 $ echo foo > f0
1376 $ hg add f0
1376 $ hg add f0
1377 $ hg ci -m '0'
1377 $ hg ci -m '0'
1378 $ echo foo > f1
1378 $ echo foo > f1
1379 $ hg add f1
1379 $ hg add f1
1380 $ hg ci -m '1'
1380 $ hg ci -m '1'
1381 $ echo foo > f2
1381 $ echo foo > f2
1382 $ hg add f2
1382 $ hg add f2
1383 $ hg ci -m '2'
1383 $ hg ci -m '2'
1384
1384
1385 $ echo bar > f2
1385 $ echo bar > f2
1386 $ hg commit --amend --config experimental.evolution.createmarkers=True
1386 $ hg commit --amend --config experimental.evolution.createmarkers=True
1387 $ hg log -G
1387 $ hg log -G
1388 @ 3:b0551702f918 (draft) [tip ] 2
1388 @ 3:b0551702f918 (draft) [tip ] 2
1389 |
1389 |
1390 o 1:e016b03fd86f (draft) [ ] 1
1390 o 1:e016b03fd86f (draft) [ ] 1
1391 |
1391 |
1392 o 0:a78f55e5508c (draft) [ ] 0
1392 o 0:a78f55e5508c (draft) [ ] 0
1393
1393
1394 $ hg log -G --hidden
1394 $ hg log -G --hidden
1395 @ 3:b0551702f918 (draft) [tip ] 2
1395 @ 3:b0551702f918 (draft) [tip ] 2
1396 |
1396 |
1397 | x 2:e008cf283490 (draft *obsolete*) [ ] 2 [rewritten using amend as 3:b0551702f918]
1397 | x 2:e008cf283490 (draft *obsolete*) [ ] 2 [rewritten using amend as 3:b0551702f918]
1398 |/
1398 |/
1399 o 1:e016b03fd86f (draft) [ ] 1
1399 o 1:e016b03fd86f (draft) [ ] 1
1400 |
1400 |
1401 o 0:a78f55e5508c (draft) [ ] 0
1401 o 0:a78f55e5508c (draft) [ ] 0
1402
1402
1403
1403
1404 $ hg strip --hidden -r 2 --config extensions.strip= --config devel.strip-obsmarkers=no
1404 $ hg strip --hidden -r 2 --config extensions.strip= --config devel.strip-obsmarkers=no
1405 saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e008cf283490-ede36964-backup.hg
1405 saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e008cf283490-ede36964-backup.hg
1406 $ hg debugobsolete
1406 $ hg debugobsolete
1407 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1407 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1408 $ hg log -G
1408 $ hg log -G
1409 @ 2:b0551702f918 (draft) [tip ] 2
1409 @ 2:b0551702f918 (draft) [tip ] 2
1410 |
1410 |
1411 o 1:e016b03fd86f (draft) [ ] 1
1411 o 1:e016b03fd86f (draft) [ ] 1
1412 |
1412 |
1413 o 0:a78f55e5508c (draft) [ ] 0
1413 o 0:a78f55e5508c (draft) [ ] 0
1414
1414
1415 $ hg log -G --hidden
1415 $ hg log -G --hidden
1416 @ 2:b0551702f918 (draft) [tip ] 2
1416 @ 2:b0551702f918 (draft) [tip ] 2
1417 |
1417 |
1418 o 1:e016b03fd86f (draft) [ ] 1
1418 o 1:e016b03fd86f (draft) [ ] 1
1419 |
1419 |
1420 o 0:a78f55e5508c (draft) [ ] 0
1420 o 0:a78f55e5508c (draft) [ ] 0
1421
1421
1422 $ hg debugbundle .hg/strip-backup/e008cf283490-*-backup.hg
1422 $ hg debugbundle .hg/strip-backup/e008cf283490-*-backup.hg
1423 Stream params: {Compression: BZ}
1423 Stream params: {Compression: BZ}
1424 changegroup -- {nbchanges: 1, version: 02}
1424 changegroup -- {nbchanges: 1, version: 02}
1425 e008cf2834908e5d6b0f792a9d4b0e2272260fb8
1425 e008cf2834908e5d6b0f792a9d4b0e2272260fb8
1426 phase-heads -- {}
1426 phase-heads -- {}
1427 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 draft
1427 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 draft
1428
1428
1429 $ hg pull .hg/strip-backup/e008cf283490-*-backup.hg
1429 $ hg pull .hg/strip-backup/e008cf283490-*-backup.hg
1430 pulling from .hg/strip-backup/e008cf283490-ede36964-backup.hg
1430 pulling from .hg/strip-backup/e008cf283490-ede36964-backup.hg
1431 searching for changes
1431 searching for changes
1432 no changes found
1432 no changes found
1433 $ hg debugobsolete
1433 $ hg debugobsolete
1434 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1434 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1435 $ hg log -G
1435 $ hg log -G
1436 @ 2:b0551702f918 (draft) [tip ] 2
1436 @ 2:b0551702f918 (draft) [tip ] 2
1437 |
1437 |
1438 o 1:e016b03fd86f (draft) [ ] 1
1438 o 1:e016b03fd86f (draft) [ ] 1
1439 |
1439 |
1440 o 0:a78f55e5508c (draft) [ ] 0
1440 o 0:a78f55e5508c (draft) [ ] 0
1441
1441
1442 $ hg log -G --hidden
1442 $ hg log -G --hidden
1443 @ 2:b0551702f918 (draft) [tip ] 2
1443 @ 2:b0551702f918 (draft) [tip ] 2
1444 |
1444 |
1445 o 1:e016b03fd86f (draft) [ ] 1
1445 o 1:e016b03fd86f (draft) [ ] 1
1446 |
1446 |
1447 o 0:a78f55e5508c (draft) [ ] 0
1447 o 0:a78f55e5508c (draft) [ ] 0
1448
1448
1449
1449
1450 Testing that strip remove markers:
1450 Testing that strip remove markers:
1451
1451
1452 $ hg strip -r 1 --config extensions.strip=
1452 $ hg strip -r 1 --config extensions.strip=
1453 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1453 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1454 saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e016b03fd86f-65ede734-backup.hg
1454 saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e016b03fd86f-65ede734-backup.hg
1455 $ hg debugobsolete
1455 $ hg debugobsolete
1456 $ hg log -G
1456 $ hg log -G
1457 @ 0:a78f55e5508c (draft) [tip ] 0
1457 @ 0:a78f55e5508c (draft) [tip ] 0
1458
1458
1459 $ hg log -G --hidden
1459 $ hg log -G --hidden
1460 @ 0:a78f55e5508c (draft) [tip ] 0
1460 @ 0:a78f55e5508c (draft) [tip ] 0
1461
1461
1462 $ hg debugbundle .hg/strip-backup/e016b03fd86f-*-backup.hg
1462 $ hg debugbundle .hg/strip-backup/e016b03fd86f-*-backup.hg
1463 Stream params: {Compression: BZ}
1463 Stream params: {Compression: BZ}
1464 changegroup -- {nbchanges: 2, version: 02}
1464 changegroup -- {nbchanges: 2, version: 02}
1465 e016b03fd86fcccc54817d120b90b751aaf367d6
1465 e016b03fd86fcccc54817d120b90b751aaf367d6
1466 b0551702f918510f01ae838ab03a463054c67b46
1466 b0551702f918510f01ae838ab03a463054c67b46
1467 obsmarkers -- {}
1467 obsmarkers -- {}
1468 version: 1 (92 bytes)
1468 version: 1 (92 bytes)
1469 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1469 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1470 phase-heads -- {}
1470 phase-heads -- {}
1471 b0551702f918510f01ae838ab03a463054c67b46 draft
1471 b0551702f918510f01ae838ab03a463054c67b46 draft
1472
1472
1473 $ hg unbundle .hg/strip-backup/e016b03fd86f-*-backup.hg
1473 $ hg unbundle .hg/strip-backup/e016b03fd86f-*-backup.hg
1474 adding changesets
1474 adding changesets
1475 adding manifests
1475 adding manifests
1476 adding file changes
1476 adding file changes
1477 added 2 changesets with 2 changes to 2 files
1477 added 2 changesets with 2 changes to 2 files
1478 1 new obsolescence markers
1478 1 new obsolescence markers
1479 new changesets e016b03fd86f:b0551702f918
1479 new changesets e016b03fd86f:b0551702f918
1480 (run 'hg update' to get a working copy)
1480 (run 'hg update' to get a working copy)
1481 $ hg debugobsolete | sort
1481 $ hg debugobsolete | sort
1482 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1482 e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
1483 $ hg log -G
1483 $ hg log -G
1484 o 2:b0551702f918 (draft) [tip ] 2
1484 o 2:b0551702f918 (draft) [tip ] 2
1485 |
1485 |
1486 o 1:e016b03fd86f (draft) [ ] 1
1486 o 1:e016b03fd86f (draft) [ ] 1
1487 |
1487 |
1488 @ 0:a78f55e5508c (draft) [ ] 0
1488 @ 0:a78f55e5508c (draft) [ ] 0
1489
1489
1490 $ hg log -G --hidden
1490 $ hg log -G --hidden
1491 o 2:b0551702f918 (draft) [tip ] 2
1491 o 2:b0551702f918 (draft) [tip ] 2
1492 |
1492 |
1493 o 1:e016b03fd86f (draft) [ ] 1
1493 o 1:e016b03fd86f (draft) [ ] 1
1494 |
1494 |
1495 @ 0:a78f55e5508c (draft) [ ] 0
1495 @ 0:a78f55e5508c (draft) [ ] 0
1496
1496
1497 Test that 'hg debugobsolete --index --rev' can show indices of obsmarkers when
1497 Test that 'hg debugobsolete --index --rev' can show indices of obsmarkers when
1498 only a subset of those are displayed (because of --rev option)
1498 only a subset of those are displayed (because of --rev option)
1499 $ hg init doindexrev
1499 $ hg init doindexrev
1500 $ cd doindexrev
1500 $ cd doindexrev
1501 $ echo a > a
1501 $ echo a > a
1502 $ hg ci -Am a
1502 $ hg ci -Am a
1503 adding a
1503 adding a
1504 $ hg ci --amend -m aa
1504 $ hg ci --amend -m aa
1505 $ echo b > b
1505 $ echo b > b
1506 $ hg ci -Am b
1506 $ hg ci -Am b
1507 adding b
1507 adding b
1508 $ hg ci --amend -m bb
1508 $ hg ci --amend -m bb
1509 $ echo c > c
1509 $ echo c > c
1510 $ hg ci -Am c
1510 $ hg ci -Am c
1511 adding c
1511 adding c
1512 $ hg ci --amend -m cc
1512 $ hg ci --amend -m cc
1513 $ echo d > d
1513 $ echo d > d
1514 $ hg ci -Am d
1514 $ hg ci -Am d
1515 adding d
1515 adding d
1516 $ hg ci --amend -m dd --config experimental.evolution.track-operation=1
1516 $ hg ci --amend -m dd --config experimental.evolution.track-operation=1
1517 $ hg debugobsolete --index --rev "3+7"
1517 $ hg debugobsolete --index --rev "3+7"
1518 1 6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1 d27fb9b066076fd921277a4b9e8b9cb48c95bc6a 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1518 1 6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1 d27fb9b066076fd921277a4b9e8b9cb48c95bc6a 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1519 3 4715cf767440ed891755448016c2b8cf70760c30 7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1519 3 4715cf767440ed891755448016c2b8cf70760c30 7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1520 $ hg debugobsolete --index --rev "3+7" -Tjson
1520 $ hg debugobsolete --index --rev "3+7" -Tjson
1521 [
1521 [
1522 {
1522 {
1523 "date": [0.0, 0],
1523 "date": [0.0, 0],
1524 "flag": 0,
1524 "flag": 0,
1525 "index": 1,
1525 "index": 1,
1526 "metadata": {"ef1": "1", "operation": "amend", "user": "test"},
1526 "metadata": {"ef1": "1", "operation": "amend", "user": "test"},
1527 "prednode": "6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1",
1527 "prednode": "6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1",
1528 "succnodes": ["d27fb9b066076fd921277a4b9e8b9cb48c95bc6a"]
1528 "succnodes": ["d27fb9b066076fd921277a4b9e8b9cb48c95bc6a"]
1529 },
1529 },
1530 {
1530 {
1531 "date": [0.0, 0],
1531 "date": [0.0, 0],
1532 "flag": 0,
1532 "flag": 0,
1533 "index": 3,
1533 "index": 3,
1534 "metadata": {"ef1": "1", "operation": "amend", "user": "test"},
1534 "metadata": {"ef1": "1", "operation": "amend", "user": "test"},
1535 "prednode": "4715cf767440ed891755448016c2b8cf70760c30",
1535 "prednode": "4715cf767440ed891755448016c2b8cf70760c30",
1536 "succnodes": ["7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d"]
1536 "succnodes": ["7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d"]
1537 }
1537 }
1538 ]
1538 ]
1539
1539
1540 Test the --delete option of debugobsolete command
1540 Test the --delete option of debugobsolete command
1541 $ hg debugobsolete --index
1541 $ hg debugobsolete --index
1542 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b f9bd49731b0b175e42992a3c8fa6c678b2bc11f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1542 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b f9bd49731b0b175e42992a3c8fa6c678b2bc11f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1543 1 6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1 d27fb9b066076fd921277a4b9e8b9cb48c95bc6a 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1543 1 6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1 d27fb9b066076fd921277a4b9e8b9cb48c95bc6a 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1544 2 1ab51af8f9b41ef8c7f6f3312d4706d870b1fb74 29346082e4a9e27042b62d2da0e2de211c027621 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1544 2 1ab51af8f9b41ef8c7f6f3312d4706d870b1fb74 29346082e4a9e27042b62d2da0e2de211c027621 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1545 3 4715cf767440ed891755448016c2b8cf70760c30 7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1545 3 4715cf767440ed891755448016c2b8cf70760c30 7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1546 $ hg debugobsolete --delete 1 --delete 3
1546 $ hg debugobsolete --delete 1 --delete 3
1547 deleted 2 obsolescence markers
1547 deleted 2 obsolescence markers
1548 $ hg debugobsolete
1548 $ hg debugobsolete
1549 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b f9bd49731b0b175e42992a3c8fa6c678b2bc11f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1549 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b f9bd49731b0b175e42992a3c8fa6c678b2bc11f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1550 1ab51af8f9b41ef8c7f6f3312d4706d870b1fb74 29346082e4a9e27042b62d2da0e2de211c027621 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1550 1ab51af8f9b41ef8c7f6f3312d4706d870b1fb74 29346082e4a9e27042b62d2da0e2de211c027621 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1551
1551
1552 Test adding changeset after obsmarkers affecting it
1552 Test adding changeset after obsmarkers affecting it
1553 (eg: during pull, or unbundle)
1553 (eg: during pull, or unbundle)
1554
1554
1555 $ mkcommit e
1555 $ mkcommit e
1556 $ hg bundle -r . --base .~1 ../bundle-2.hg
1556 $ hg bundle -r . --base .~1 ../bundle-2.hg
1557 1 changesets found
1557 1 changesets found
1558 $ getid .
1558 $ getid .
1559 $ hg --config extensions.strip= strip -r .
1559 $ hg --config extensions.strip= strip -r .
1560 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1560 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1561 saved backup bundle to $TESTTMP/tmpe/issue4845/doindexrev/.hg/strip-backup/9bc153528424-ee80edd4-backup.hg
1561 saved backup bundle to $TESTTMP/tmpe/issue4845/doindexrev/.hg/strip-backup/9bc153528424-ee80edd4-backup.hg
1562 $ hg debugobsolete 9bc153528424ea266d13e57f9ff0d799dfe61e4b
1562 $ hg debugobsolete 9bc153528424ea266d13e57f9ff0d799dfe61e4b
1563 $ hg unbundle ../bundle-2.hg
1563 $ hg unbundle ../bundle-2.hg
1564 adding changesets
1564 adding changesets
1565 adding manifests
1565 adding manifests
1566 adding file changes
1566 adding file changes
1567 added 1 changesets with 1 changes to 1 files
1567 added 1 changesets with 1 changes to 1 files
1568 (run 'hg update' to get a working copy)
1568 (run 'hg update' to get a working copy)
1569 $ hg log -G
1569 $ hg log -G
1570 @ 7:7ae79c5d60f0 (draft) [tip ] dd
1570 @ 7:7ae79c5d60f0 (draft) [tip ] dd
1571 |
1571 |
1572 | o 6:4715cf767440 (draft) [ ] d
1572 | o 6:4715cf767440 (draft) [ ] d
1573 |/
1573 |/
1574 o 5:29346082e4a9 (draft) [ ] cc
1574 o 5:29346082e4a9 (draft) [ ] cc
1575 |
1575 |
1576 o 3:d27fb9b06607 (draft) [ ] bb
1576 o 3:d27fb9b06607 (draft) [ ] bb
1577 |
1577 |
1578 | o 2:6fdef60fcbab (draft) [ ] b
1578 | o 2:6fdef60fcbab (draft) [ ] b
1579 |/
1579 |/
1580 o 1:f9bd49731b0b (draft) [ ] aa
1580 o 1:f9bd49731b0b (draft) [ ] aa
1581
1581
1582
1582
1583 $ cd ..
1583 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now