##// END OF EJS Templates
tests: fix inline extension in test-fncache.t for Python 3...
Augie Fackler -
r40298:c8f16406 default
parent child Browse files
Show More
@@ -1,628 +1,629
1 test-abort-checkin.t
1 test-abort-checkin.t
2 test-absorb-filefixupstate.py
2 test-absorb-filefixupstate.py
3 test-absorb-phase.t
3 test-absorb-phase.t
4 test-absorb-rename.t
4 test-absorb-rename.t
5 test-absorb-strip.t
5 test-absorb-strip.t
6 test-absorb.t
6 test-absorb.t
7 test-add.t
7 test-add.t
8 test-addremove-similar.t
8 test-addremove-similar.t
9 test-addremove.t
9 test-addremove.t
10 test-alias.t
10 test-alias.t
11 test-amend-subrepo.t
11 test-amend-subrepo.t
12 test-amend.t
12 test-amend.t
13 test-ancestor.py
13 test-ancestor.py
14 test-annotate.py
14 test-annotate.py
15 test-annotate.t
15 test-annotate.t
16 test-archive-symlinks.t
16 test-archive-symlinks.t
17 test-archive.t
17 test-archive.t
18 test-atomictempfile.py
18 test-atomictempfile.py
19 test-audit-path.t
19 test-audit-path.t
20 test-audit-subrepo.t
20 test-audit-subrepo.t
21 test-automv.t
21 test-automv.t
22 test-backout.t
22 test-backout.t
23 test-backwards-remove.t
23 test-backwards-remove.t
24 test-bad-extension.t
24 test-bad-extension.t
25 test-bad-pull.t
25 test-bad-pull.t
26 test-basic.t
26 test-basic.t
27 test-bdiff.py
27 test-bdiff.py
28 test-bheads.t
28 test-bheads.t
29 test-bisect.t
29 test-bisect.t
30 test-bisect2.t
30 test-bisect2.t
31 test-bisect3.t
31 test-bisect3.t
32 test-blackbox.t
32 test-blackbox.t
33 test-bookmarks-current.t
33 test-bookmarks-current.t
34 test-bookmarks-merge.t
34 test-bookmarks-merge.t
35 test-bookmarks-pushpull.t
35 test-bookmarks-pushpull.t
36 test-bookmarks-rebase.t
36 test-bookmarks-rebase.t
37 test-bookmarks-strip.t
37 test-bookmarks-strip.t
38 test-bookmarks.t
38 test-bookmarks.t
39 test-branch-change.t
39 test-branch-change.t
40 test-branch-option.t
40 test-branch-option.t
41 test-branch-tag-confict.t
41 test-branch-tag-confict.t
42 test-branches.t
42 test-branches.t
43 test-bundle-phases.t
43 test-bundle-phases.t
44 test-bundle-r.t
44 test-bundle-r.t
45 test-bundle-type.t
45 test-bundle-type.t
46 test-bundle-vs-outgoing.t
46 test-bundle-vs-outgoing.t
47 test-bundle.t
47 test-bundle.t
48 test-bundle2-exchange.t
48 test-bundle2-exchange.t
49 test-bundle2-format.t
49 test-bundle2-format.t
50 test-bundle2-multiple-changegroups.t
50 test-bundle2-multiple-changegroups.t
51 test-bundle2-pushback.t
51 test-bundle2-pushback.t
52 test-bundle2-remote-changegroup.t
52 test-bundle2-remote-changegroup.t
53 test-cache-abuse.t
53 test-cache-abuse.t
54 test-cappedreader.py
54 test-cappedreader.py
55 test-casecollision.t
55 test-casecollision.t
56 test-cat.t
56 test-cat.t
57 test-cbor.py
57 test-cbor.py
58 test-censor.t
58 test-censor.t
59 test-changelog-exec.t
59 test-changelog-exec.t
60 test-check-code.t
60 test-check-code.t
61 test-check-commit.t
61 test-check-commit.t
62 test-check-config.py
62 test-check-config.py
63 test-check-config.t
63 test-check-config.t
64 test-check-execute.t
64 test-check-execute.t
65 test-check-interfaces.py
65 test-check-interfaces.py
66 test-check-module-imports.t
66 test-check-module-imports.t
67 test-check-py3-compat.t
67 test-check-py3-compat.t
68 test-check-pyflakes.t
68 test-check-pyflakes.t
69 test-check-pylint.t
69 test-check-pylint.t
70 test-check-shbang.t
70 test-check-shbang.t
71 test-children.t
71 test-children.t
72 test-churn.t
72 test-churn.t
73 test-clone-cgi.t
73 test-clone-cgi.t
74 test-clone-pull-corruption.t
74 test-clone-pull-corruption.t
75 test-clone-r.t
75 test-clone-r.t
76 test-clone-uncompressed.t
76 test-clone-uncompressed.t
77 test-clone-update-order.t
77 test-clone-update-order.t
78 test-clone.t
78 test-clone.t
79 test-clonebundles.t
79 test-clonebundles.t
80 test-close-head.t
80 test-close-head.t
81 test-commit-amend.t
81 test-commit-amend.t
82 test-commit-interactive.t
82 test-commit-interactive.t
83 test-commit-multiple.t
83 test-commit-multiple.t
84 test-commit-unresolved.t
84 test-commit-unresolved.t
85 test-commit.t
85 test-commit.t
86 test-committer.t
86 test-committer.t
87 test-completion.t
87 test-completion.t
88 test-config-env.py
88 test-config-env.py
89 test-config.t
89 test-config.t
90 test-conflict.t
90 test-conflict.t
91 test-confused-revert.t
91 test-confused-revert.t
92 test-context.py
92 test-context.py
93 test-contrib-check-code.t
93 test-contrib-check-code.t
94 test-contrib-check-commit.t
94 test-contrib-check-commit.t
95 test-contrib-dumprevlog.t
95 test-contrib-dumprevlog.t
96 test-contrib-perf.t
96 test-contrib-perf.t
97 test-contrib-relnotes.t
97 test-contrib-relnotes.t
98 test-contrib-testparseutil.t
98 test-contrib-testparseutil.t
99 test-contrib.t
99 test-contrib.t
100 test-convert-authormap.t
100 test-convert-authormap.t
101 test-convert-clonebranches.t
101 test-convert-clonebranches.t
102 test-convert-cvs-branch.t
102 test-convert-cvs-branch.t
103 test-convert-cvs-detectmerge.t
103 test-convert-cvs-detectmerge.t
104 test-convert-cvs-synthetic.t
104 test-convert-cvs-synthetic.t
105 test-convert-cvs.t
105 test-convert-cvs.t
106 test-convert-cvsnt-mergepoints.t
106 test-convert-cvsnt-mergepoints.t
107 test-convert-datesort.t
107 test-convert-datesort.t
108 test-convert-filemap.t
108 test-convert-filemap.t
109 test-convert-hg-sink.t
109 test-convert-hg-sink.t
110 test-convert-hg-source.t
110 test-convert-hg-source.t
111 test-convert-hg-startrev.t
111 test-convert-hg-startrev.t
112 test-convert-splicemap.t
112 test-convert-splicemap.t
113 test-convert-tagsbranch-topology.t
113 test-convert-tagsbranch-topology.t
114 test-copy-move-merge.t
114 test-copy-move-merge.t
115 test-copy.t
115 test-copy.t
116 test-copytrace-heuristics.t
116 test-copytrace-heuristics.t
117 test-debugbuilddag.t
117 test-debugbuilddag.t
118 test-debugbundle.t
118 test-debugbundle.t
119 test-debugcommands.t
119 test-debugcommands.t
120 test-debugextensions.t
120 test-debugextensions.t
121 test-debugindexdot.t
121 test-debugindexdot.t
122 test-debugrename.t
122 test-debugrename.t
123 test-default-push.t
123 test-default-push.t
124 test-diff-antipatience.t
124 test-diff-antipatience.t
125 test-diff-binary-file.t
125 test-diff-binary-file.t
126 test-diff-change.t
126 test-diff-change.t
127 test-diff-copy-depth.t
127 test-diff-copy-depth.t
128 test-diff-hashes.t
128 test-diff-hashes.t
129 test-diff-ignore-whitespace.t
129 test-diff-ignore-whitespace.t
130 test-diff-indent-heuristic.t
130 test-diff-indent-heuristic.t
131 test-diff-issue2761.t
131 test-diff-issue2761.t
132 test-diff-newlines.t
132 test-diff-newlines.t
133 test-diff-reverse.t
133 test-diff-reverse.t
134 test-diff-subdir.t
134 test-diff-subdir.t
135 test-diff-unified.t
135 test-diff-unified.t
136 test-diff-upgrade.t
136 test-diff-upgrade.t
137 test-diffdir.t
137 test-diffdir.t
138 test-diffstat.t
138 test-diffstat.t
139 test-directaccess.t
139 test-directaccess.t
140 test-dirstate-backup.t
140 test-dirstate-backup.t
141 test-dirstate-nonnormalset.t
141 test-dirstate-nonnormalset.t
142 test-dirstate.t
142 test-dirstate.t
143 test-dispatch.py
143 test-dispatch.py
144 test-doctest.py
144 test-doctest.py
145 test-double-merge.t
145 test-double-merge.t
146 test-drawdag.t
146 test-drawdag.t
147 test-duplicateoptions.py
147 test-duplicateoptions.py
148 test-editor-filename.t
148 test-editor-filename.t
149 test-empty-dir.t
149 test-empty-dir.t
150 test-empty-file.t
150 test-empty-file.t
151 test-empty-group.t
151 test-empty-group.t
152 test-empty.t
152 test-empty.t
153 test-encode.t
153 test-encode.t
154 test-encoding-func.py
154 test-encoding-func.py
155 test-encoding.t
155 test-encoding.t
156 test-eol-add.t
156 test-eol-add.t
157 test-eol-clone.t
157 test-eol-clone.t
158 test-eol-hook.t
158 test-eol-hook.t
159 test-eol-patch.t
159 test-eol-patch.t
160 test-eol-tag.t
160 test-eol-tag.t
161 test-eol-update.t
161 test-eol-update.t
162 test-eol.t
162 test-eol.t
163 test-eolfilename.t
163 test-eolfilename.t
164 test-excessive-merge.t
164 test-excessive-merge.t
165 test-exchange-obsmarkers-case-A1.t
165 test-exchange-obsmarkers-case-A1.t
166 test-exchange-obsmarkers-case-A2.t
166 test-exchange-obsmarkers-case-A2.t
167 test-exchange-obsmarkers-case-A3.t
167 test-exchange-obsmarkers-case-A3.t
168 test-exchange-obsmarkers-case-A4.t
168 test-exchange-obsmarkers-case-A4.t
169 test-exchange-obsmarkers-case-A5.t
169 test-exchange-obsmarkers-case-A5.t
170 test-exchange-obsmarkers-case-A6.t
170 test-exchange-obsmarkers-case-A6.t
171 test-exchange-obsmarkers-case-A7.t
171 test-exchange-obsmarkers-case-A7.t
172 test-exchange-obsmarkers-case-B1.t
172 test-exchange-obsmarkers-case-B1.t
173 test-exchange-obsmarkers-case-B2.t
173 test-exchange-obsmarkers-case-B2.t
174 test-exchange-obsmarkers-case-B3.t
174 test-exchange-obsmarkers-case-B3.t
175 test-exchange-obsmarkers-case-B4.t
175 test-exchange-obsmarkers-case-B4.t
176 test-exchange-obsmarkers-case-B5.t
176 test-exchange-obsmarkers-case-B5.t
177 test-exchange-obsmarkers-case-B6.t
177 test-exchange-obsmarkers-case-B6.t
178 test-exchange-obsmarkers-case-B7.t
178 test-exchange-obsmarkers-case-B7.t
179 test-exchange-obsmarkers-case-C1.t
179 test-exchange-obsmarkers-case-C1.t
180 test-exchange-obsmarkers-case-C2.t
180 test-exchange-obsmarkers-case-C2.t
181 test-exchange-obsmarkers-case-C3.t
181 test-exchange-obsmarkers-case-C3.t
182 test-exchange-obsmarkers-case-C4.t
182 test-exchange-obsmarkers-case-C4.t
183 test-exchange-obsmarkers-case-D1.t
183 test-exchange-obsmarkers-case-D1.t
184 test-exchange-obsmarkers-case-D2.t
184 test-exchange-obsmarkers-case-D2.t
185 test-exchange-obsmarkers-case-D3.t
185 test-exchange-obsmarkers-case-D3.t
186 test-exchange-obsmarkers-case-D4.t
186 test-exchange-obsmarkers-case-D4.t
187 test-execute-bit.t
187 test-execute-bit.t
188 test-export.t
188 test-export.t
189 test-extdata.t
189 test-extdata.t
190 test-extdiff.t
190 test-extdiff.t
191 test-extensions-afterloaded.t
191 test-extensions-afterloaded.t
192 test-extensions-wrapfunction.py
192 test-extensions-wrapfunction.py
193 test-extra-filelog-entry.t
193 test-extra-filelog-entry.t
194 test-fetch.t
194 test-fetch.t
195 test-filebranch.t
195 test-filebranch.t
196 test-filecache.py
196 test-filecache.py
197 test-filelog.py
197 test-filelog.py
198 test-fileset-generated.t
198 test-fileset-generated.t
199 test-fileset.t
199 test-fileset.t
200 test-fix-topology.t
200 test-fix-topology.t
201 test-fix.t
201 test-fix.t
202 test-flags.t
202 test-flags.t
203 test-fncache.t
203 test-generaldelta.t
204 test-generaldelta.t
204 test-getbundle.t
205 test-getbundle.t
205 test-git-export.t
206 test-git-export.t
206 test-globalopts.t
207 test-globalopts.t
207 test-glog-beautifygraph.t
208 test-glog-beautifygraph.t
208 test-glog-topological.t
209 test-glog-topological.t
209 test-glog.t
210 test-glog.t
210 test-gpg.t
211 test-gpg.t
211 test-graft.t
212 test-graft.t
212 test-grep.t
213 test-grep.t
213 test-hg-parseurl.py
214 test-hg-parseurl.py
214 test-hghave.t
215 test-hghave.t
215 test-hgignore.t
216 test-hgignore.t
216 test-hgk.t
217 test-hgk.t
217 test-hgrc.t
218 test-hgrc.t
218 test-hgweb-annotate-whitespace.t
219 test-hgweb-annotate-whitespace.t
219 test-hgweb-bundle.t
220 test-hgweb-bundle.t
220 test-hgweb-csp.t
221 test-hgweb-csp.t
221 test-hgweb-descend-empties.t
222 test-hgweb-descend-empties.t
222 test-hgweb-diffs.t
223 test-hgweb-diffs.t
223 test-hgweb-empty.t
224 test-hgweb-empty.t
224 test-hgweb-filelog.t
225 test-hgweb-filelog.t
225 test-hgweb-non-interactive.t
226 test-hgweb-non-interactive.t
226 test-hgweb-raw.t
227 test-hgweb-raw.t
227 test-hgweb-removed.t
228 test-hgweb-removed.t
228 test-hgweb.t
229 test-hgweb.t
229 test-hgwebdir-paths.py
230 test-hgwebdir-paths.py
230 test-hgwebdirsym.t
231 test-hgwebdirsym.t
231 test-histedit-arguments.t
232 test-histedit-arguments.t
232 test-histedit-base.t
233 test-histedit-base.t
233 test-histedit-bookmark-motion.t
234 test-histedit-bookmark-motion.t
234 test-histedit-commute.t
235 test-histedit-commute.t
235 test-histedit-drop.t
236 test-histedit-drop.t
236 test-histedit-edit.t
237 test-histedit-edit.t
237 test-histedit-fold-non-commute.t
238 test-histedit-fold-non-commute.t
238 test-histedit-fold.t
239 test-histedit-fold.t
239 test-histedit-no-backup.t
240 test-histedit-no-backup.t
240 test-histedit-no-change.t
241 test-histedit-no-change.t
241 test-histedit-non-commute-abort.t
242 test-histedit-non-commute-abort.t
242 test-histedit-non-commute.t
243 test-histedit-non-commute.t
243 test-histedit-obsolete.t
244 test-histedit-obsolete.t
244 test-histedit-outgoing.t
245 test-histedit-outgoing.t
245 test-histedit-templates.t
246 test-histedit-templates.t
246 test-http-branchmap.t
247 test-http-branchmap.t
247 test-http-bundle1.t
248 test-http-bundle1.t
248 test-http-clone-r.t
249 test-http-clone-r.t
249 test-http-permissions.t
250 test-http-permissions.t
250 test-http.t
251 test-http.t
251 test-hybridencode.py
252 test-hybridencode.py
252 test-i18n.t
253 test-i18n.t
253 test-identify.t
254 test-identify.t
254 test-impexp-branch.t
255 test-impexp-branch.t
255 test-import-bypass.t
256 test-import-bypass.t
256 test-import-eol.t
257 test-import-eol.t
257 test-import-merge.t
258 test-import-merge.t
258 test-import-unknown.t
259 test-import-unknown.t
259 test-import.t
260 test-import.t
260 test-imports-checker.t
261 test-imports-checker.t
261 test-incoming-outgoing.t
262 test-incoming-outgoing.t
262 test-infinitepush-bundlestore.t
263 test-infinitepush-bundlestore.t
263 test-infinitepush-ci.t
264 test-infinitepush-ci.t
264 test-infinitepush.t
265 test-infinitepush.t
265 test-inherit-mode.t
266 test-inherit-mode.t
266 test-init.t
267 test-init.t
267 test-issue1089.t
268 test-issue1089.t
268 test-issue1102.t
269 test-issue1102.t
269 test-issue1175.t
270 test-issue1175.t
270 test-issue1306.t
271 test-issue1306.t
271 test-issue1438.t
272 test-issue1438.t
272 test-issue1502.t
273 test-issue1502.t
273 test-issue1802.t
274 test-issue1802.t
274 test-issue1877.t
275 test-issue1877.t
275 test-issue1993.t
276 test-issue1993.t
276 test-issue2137.t
277 test-issue2137.t
277 test-issue3084.t
278 test-issue3084.t
278 test-issue4074.t
279 test-issue4074.t
279 test-issue522.t
280 test-issue522.t
280 test-issue586.t
281 test-issue586.t
281 test-issue5979.t
282 test-issue5979.t
282 test-issue612.t
283 test-issue612.t
283 test-issue619.t
284 test-issue619.t
284 test-issue660.t
285 test-issue660.t
285 test-issue672.t
286 test-issue672.t
286 test-issue842.t
287 test-issue842.t
287 test-journal-exists.t
288 test-journal-exists.t
288 test-journal-share.t
289 test-journal-share.t
289 test-journal.t
290 test-journal.t
290 test-known.t
291 test-known.t
291 test-largefiles-cache.t
292 test-largefiles-cache.t
292 test-largefiles-misc.t
293 test-largefiles-misc.t
293 test-largefiles-small-disk.t
294 test-largefiles-small-disk.t
294 test-largefiles-update.t
295 test-largefiles-update.t
295 test-largefiles.t
296 test-largefiles.t
296 test-lfs-largefiles.t
297 test-lfs-largefiles.t
297 test-lfs-pointer.py
298 test-lfs-pointer.py
298 test-linelog.py
299 test-linelog.py
299 test-linerange.py
300 test-linerange.py
300 test-locate.t
301 test-locate.t
301 test-lock-badness.t
302 test-lock-badness.t
302 test-log-linerange.t
303 test-log-linerange.t
303 test-log.t
304 test-log.t
304 test-logexchange.t
305 test-logexchange.t
305 test-lrucachedict.py
306 test-lrucachedict.py
306 test-mactext.t
307 test-mactext.t
307 test-mailmap.t
308 test-mailmap.t
308 test-manifest-merging.t
309 test-manifest-merging.t
309 test-manifest.py
310 test-manifest.py
310 test-manifest.t
311 test-manifest.t
311 test-match.py
312 test-match.py
312 test-mdiff.py
313 test-mdiff.py
313 test-merge-changedelete.t
314 test-merge-changedelete.t
314 test-merge-closedheads.t
315 test-merge-closedheads.t
315 test-merge-commit.t
316 test-merge-commit.t
316 test-merge-criss-cross.t
317 test-merge-criss-cross.t
317 test-merge-default.t
318 test-merge-default.t
318 test-merge-force.t
319 test-merge-force.t
319 test-merge-halt.t
320 test-merge-halt.t
320 test-merge-internal-tools-pattern.t
321 test-merge-internal-tools-pattern.t
321 test-merge-local.t
322 test-merge-local.t
322 test-merge-no-file-change.t
323 test-merge-no-file-change.t
323 test-merge-remove.t
324 test-merge-remove.t
324 test-merge-revert.t
325 test-merge-revert.t
325 test-merge-revert2.t
326 test-merge-revert2.t
326 test-merge-subrepos.t
327 test-merge-subrepos.t
327 test-merge-symlinks.t
328 test-merge-symlinks.t
328 test-merge-tools.t
329 test-merge-tools.t
329 test-merge-types.t
330 test-merge-types.t
330 test-merge1.t
331 test-merge1.t
331 test-merge10.t
332 test-merge10.t
332 test-merge2.t
333 test-merge2.t
333 test-merge4.t
334 test-merge4.t
334 test-merge5.t
335 test-merge5.t
335 test-merge6.t
336 test-merge6.t
336 test-merge7.t
337 test-merge7.t
337 test-merge8.t
338 test-merge8.t
338 test-merge9.t
339 test-merge9.t
339 test-minifileset.py
340 test-minifileset.py
340 test-minirst.py
341 test-minirst.py
341 test-mq-git.t
342 test-mq-git.t
342 test-mq-guards.t
343 test-mq-guards.t
343 test-mq-header-date.t
344 test-mq-header-date.t
344 test-mq-header-from.t
345 test-mq-header-from.t
345 test-mq-merge.t
346 test-mq-merge.t
346 test-mq-pull-from-bundle.t
347 test-mq-pull-from-bundle.t
347 test-mq-qclone-http.t
348 test-mq-qclone-http.t
348 test-mq-qdelete.t
349 test-mq-qdelete.t
349 test-mq-qdiff.t
350 test-mq-qdiff.t
350 test-mq-qfold.t
351 test-mq-qfold.t
351 test-mq-qgoto.t
352 test-mq-qgoto.t
352 test-mq-qimport-fail-cleanup.t
353 test-mq-qimport-fail-cleanup.t
353 test-mq-qnew.t
354 test-mq-qnew.t
354 test-mq-qpush-exact.t
355 test-mq-qpush-exact.t
355 test-mq-qpush-fail.t
356 test-mq-qpush-fail.t
356 test-mq-qqueue.t
357 test-mq-qqueue.t
357 test-mq-qrefresh-interactive.t
358 test-mq-qrefresh-interactive.t
358 test-mq-qrefresh-replace-log-message.t
359 test-mq-qrefresh-replace-log-message.t
359 test-mq-qrefresh.t
360 test-mq-qrefresh.t
360 test-mq-qrename.t
361 test-mq-qrename.t
361 test-mq-qsave.t
362 test-mq-qsave.t
362 test-mq-safety.t
363 test-mq-safety.t
363 test-mq-subrepo.t
364 test-mq-subrepo.t
364 test-mq-symlinks.t
365 test-mq-symlinks.t
365 test-mq.t
366 test-mq.t
366 test-mv-cp-st-diff.t
367 test-mv-cp-st-diff.t
367 test-narrow-acl.t
368 test-narrow-acl.t
368 test-narrow-archive.t
369 test-narrow-archive.t
369 test-narrow-clone-no-ellipsis.t
370 test-narrow-clone-no-ellipsis.t
370 test-narrow-clone-non-narrow-server.t
371 test-narrow-clone-non-narrow-server.t
371 test-narrow-clone-nonlinear.t
372 test-narrow-clone-nonlinear.t
372 test-narrow-clone.t
373 test-narrow-clone.t
373 test-narrow-commit.t
374 test-narrow-commit.t
374 test-narrow-copies.t
375 test-narrow-copies.t
375 test-narrow-debugcommands.t
376 test-narrow-debugcommands.t
376 test-narrow-debugrebuilddirstate.t
377 test-narrow-debugrebuilddirstate.t
377 test-narrow-exchange-merges.t
378 test-narrow-exchange-merges.t
378 test-narrow-exchange.t
379 test-narrow-exchange.t
379 test-narrow-expanddirstate.t
380 test-narrow-expanddirstate.t
380 test-narrow-merge.t
381 test-narrow-merge.t
381 test-narrow-patch.t
382 test-narrow-patch.t
382 test-narrow-patterns.t
383 test-narrow-patterns.t
383 test-narrow-pull.t
384 test-narrow-pull.t
384 test-narrow-rebase.t
385 test-narrow-rebase.t
385 test-narrow-shallow-merges.t
386 test-narrow-shallow-merges.t
386 test-narrow-shallow.t
387 test-narrow-shallow.t
387 test-narrow-strip.t
388 test-narrow-strip.t
388 test-narrow-trackedcmd.t
389 test-narrow-trackedcmd.t
389 test-narrow-update.t
390 test-narrow-update.t
390 test-narrow-widen-no-ellipsis.t
391 test-narrow-widen-no-ellipsis.t
391 test-narrow-widen.t
392 test-narrow-widen.t
392 test-narrow.t
393 test-narrow.t
393 test-nested-repo.t
394 test-nested-repo.t
394 test-newbranch.t
395 test-newbranch.t
395 test-newercgi.t
396 test-newercgi.t
396 test-nointerrupt.t
397 test-nointerrupt.t
397 test-obshistory.t
398 test-obshistory.t
398 test-obsmarker-template.t
399 test-obsmarker-template.t
399 test-obsmarkers-effectflag.t
400 test-obsmarkers-effectflag.t
400 test-obsolete-bounds-checking.t
401 test-obsolete-bounds-checking.t
401 test-obsolete-bundle-strip.t
402 test-obsolete-bundle-strip.t
402 test-obsolete-changeset-exchange.t
403 test-obsolete-changeset-exchange.t
403 test-obsolete-checkheads.t
404 test-obsolete-checkheads.t
404 test-obsolete-distributed.t
405 test-obsolete-distributed.t
405 test-obsolete-divergent.t
406 test-obsolete-divergent.t
406 test-obsolete-tag-cache.t
407 test-obsolete-tag-cache.t
407 test-obsolete.t
408 test-obsolete.t
408 test-origbackup-conflict.t
409 test-origbackup-conflict.t
409 test-pager-legacy.t
410 test-pager-legacy.t
410 test-pager.t
411 test-pager.t
411 test-parents.t
412 test-parents.t
412 test-parse-date.t
413 test-parse-date.t
413 test-parseindex2.py
414 test-parseindex2.py
414 test-patch-offset.t
415 test-patch-offset.t
415 test-patch.t
416 test-patch.t
416 test-patchbomb-bookmark.t
417 test-patchbomb-bookmark.t
417 test-patchbomb-tls.t
418 test-patchbomb-tls.t
418 test-patchbomb.t
419 test-patchbomb.t
419 test-pathconflicts-basic.t
420 test-pathconflicts-basic.t
420 test-pathconflicts-merge.t
421 test-pathconflicts-merge.t
421 test-pathconflicts-update.t
422 test-pathconflicts-update.t
422 test-pathencode.py
423 test-pathencode.py
423 test-pending.t
424 test-pending.t
424 test-permissions.t
425 test-permissions.t
425 test-phases-exchange.t
426 test-phases-exchange.t
426 test-phases.t
427 test-phases.t
427 test-profile.t
428 test-profile.t
428 test-progress.t
429 test-progress.t
429 test-pull-branch.t
430 test-pull-branch.t
430 test-pull-http.t
431 test-pull-http.t
431 test-pull-permission.t
432 test-pull-permission.t
432 test-pull-pull-corruption.t
433 test-pull-pull-corruption.t
433 test-pull-r.t
434 test-pull-r.t
434 test-pull-update.t
435 test-pull-update.t
435 test-pull.t
436 test-pull.t
436 test-purge.t
437 test-purge.t
437 test-push-cgi.t
438 test-push-cgi.t
438 test-push-checkheads-partial-C1.t
439 test-push-checkheads-partial-C1.t
439 test-push-checkheads-partial-C2.t
440 test-push-checkheads-partial-C2.t
440 test-push-checkheads-partial-C3.t
441 test-push-checkheads-partial-C3.t
441 test-push-checkheads-partial-C4.t
442 test-push-checkheads-partial-C4.t
442 test-push-checkheads-pruned-B1.t
443 test-push-checkheads-pruned-B1.t
443 test-push-checkheads-pruned-B2.t
444 test-push-checkheads-pruned-B2.t
444 test-push-checkheads-pruned-B3.t
445 test-push-checkheads-pruned-B3.t
445 test-push-checkheads-pruned-B4.t
446 test-push-checkheads-pruned-B4.t
446 test-push-checkheads-pruned-B5.t
447 test-push-checkheads-pruned-B5.t
447 test-push-checkheads-pruned-B6.t
448 test-push-checkheads-pruned-B6.t
448 test-push-checkheads-pruned-B7.t
449 test-push-checkheads-pruned-B7.t
449 test-push-checkheads-pruned-B8.t
450 test-push-checkheads-pruned-B8.t
450 test-push-checkheads-superceed-A1.t
451 test-push-checkheads-superceed-A1.t
451 test-push-checkheads-superceed-A2.t
452 test-push-checkheads-superceed-A2.t
452 test-push-checkheads-superceed-A3.t
453 test-push-checkheads-superceed-A3.t
453 test-push-checkheads-superceed-A4.t
454 test-push-checkheads-superceed-A4.t
454 test-push-checkheads-superceed-A5.t
455 test-push-checkheads-superceed-A5.t
455 test-push-checkheads-superceed-A6.t
456 test-push-checkheads-superceed-A6.t
456 test-push-checkheads-superceed-A7.t
457 test-push-checkheads-superceed-A7.t
457 test-push-checkheads-superceed-A8.t
458 test-push-checkheads-superceed-A8.t
458 test-push-checkheads-unpushed-D1.t
459 test-push-checkheads-unpushed-D1.t
459 test-push-checkheads-unpushed-D2.t
460 test-push-checkheads-unpushed-D2.t
460 test-push-checkheads-unpushed-D3.t
461 test-push-checkheads-unpushed-D3.t
461 test-push-checkheads-unpushed-D4.t
462 test-push-checkheads-unpushed-D4.t
462 test-push-checkheads-unpushed-D5.t
463 test-push-checkheads-unpushed-D5.t
463 test-push-checkheads-unpushed-D6.t
464 test-push-checkheads-unpushed-D6.t
464 test-push-checkheads-unpushed-D7.t
465 test-push-checkheads-unpushed-D7.t
465 test-push-http.t
466 test-push-http.t
466 test-push-warn.t
467 test-push-warn.t
467 test-push.t
468 test-push.t
468 test-pushvars.t
469 test-pushvars.t
469 test-qrecord.t
470 test-qrecord.t
470 test-rebase-abort.t
471 test-rebase-abort.t
471 test-rebase-backup.t
472 test-rebase-backup.t
472 test-rebase-base-flag.t
473 test-rebase-base-flag.t
473 test-rebase-bookmarks.t
474 test-rebase-bookmarks.t
474 test-rebase-brute-force.t
475 test-rebase-brute-force.t
475 test-rebase-cache.t
476 test-rebase-cache.t
476 test-rebase-check-restore.t
477 test-rebase-check-restore.t
477 test-rebase-collapse.t
478 test-rebase-collapse.t
478 test-rebase-conflicts.t
479 test-rebase-conflicts.t
479 test-rebase-dest.t
480 test-rebase-dest.t
480 test-rebase-detach.t
481 test-rebase-detach.t
481 test-rebase-emptycommit.t
482 test-rebase-emptycommit.t
482 test-rebase-inmemory.t
483 test-rebase-inmemory.t
483 test-rebase-interruptions.t
484 test-rebase-interruptions.t
484 test-rebase-issue-noparam-single-rev.t
485 test-rebase-issue-noparam-single-rev.t
485 test-rebase-legacy.t
486 test-rebase-legacy.t
486 test-rebase-mq-skip.t
487 test-rebase-mq-skip.t
487 test-rebase-mq.t
488 test-rebase-mq.t
488 test-rebase-named-branches.t
489 test-rebase-named-branches.t
489 test-rebase-newancestor.t
490 test-rebase-newancestor.t
490 test-rebase-obsolete.t
491 test-rebase-obsolete.t
491 test-rebase-parameters.t
492 test-rebase-parameters.t
492 test-rebase-partial.t
493 test-rebase-partial.t
493 test-rebase-pull.t
494 test-rebase-pull.t
494 test-rebase-rename.t
495 test-rebase-rename.t
495 test-rebase-scenario-global.t
496 test-rebase-scenario-global.t
496 test-rebase-templates.t
497 test-rebase-templates.t
497 test-rebase-transaction.t
498 test-rebase-transaction.t
498 test-rebuildstate.t
499 test-rebuildstate.t
499 test-record.t
500 test-record.t
500 test-releasenotes-formatting.t
501 test-releasenotes-formatting.t
501 test-releasenotes-merging.t
502 test-releasenotes-merging.t
502 test-releasenotes-parsing.t
503 test-releasenotes-parsing.t
503 test-relink.t
504 test-relink.t
504 test-remove.t
505 test-remove.t
505 test-removeemptydirs.t
506 test-removeemptydirs.t
506 test-rename-after-merge.t
507 test-rename-after-merge.t
507 test-rename-dir-merge.t
508 test-rename-dir-merge.t
508 test-rename-merge1.t
509 test-rename-merge1.t
509 test-rename-merge2.t
510 test-rename-merge2.t
510 test-rename.t
511 test-rename.t
511 test-repair-strip.t
512 test-repair-strip.t
512 test-repo-compengines.t
513 test-repo-compengines.t
513 test-requires.t
514 test-requires.t
514 test-resolve.t
515 test-resolve.t
515 test-revert-flags.t
516 test-revert-flags.t
516 test-revert-interactive.t
517 test-revert-interactive.t
517 test-revert-unknown.t
518 test-revert-unknown.t
518 test-revert.t
519 test-revert.t
519 test-revisions.t
520 test-revisions.t
520 test-revlog-ancestry.py
521 test-revlog-ancestry.py
521 test-revlog-group-emptyiter.t
522 test-revlog-group-emptyiter.t
522 test-revlog-mmapindex.t
523 test-revlog-mmapindex.t
523 test-revlog-packentry.t
524 test-revlog-packentry.t
524 test-revlog-raw.py
525 test-revlog-raw.py
525 test-revlog-v2.t
526 test-revlog-v2.t
526 test-revset-dirstate-parents.t
527 test-revset-dirstate-parents.t
527 test-revset-legacy-lookup.t
528 test-revset-legacy-lookup.t
528 test-revset-outgoing.t
529 test-revset-outgoing.t
529 test-rollback.t
530 test-rollback.t
530 test-run-tests.py
531 test-run-tests.py
531 test-run-tests.t
532 test-run-tests.t
532 test-schemes.t
533 test-schemes.t
533 test-serve.t
534 test-serve.t
534 test-setdiscovery.t
535 test-setdiscovery.t
535 test-share.t
536 test-share.t
536 test-shelve.t
537 test-shelve.t
537 test-show-stack.t
538 test-show-stack.t
538 test-show-work.t
539 test-show-work.t
539 test-show.t
540 test-show.t
540 test-simple-update.t
541 test-simple-update.t
541 test-simplekeyvaluefile.py
542 test-simplekeyvaluefile.py
542 test-simplemerge.py
543 test-simplemerge.py
543 test-single-head.t
544 test-single-head.t
544 test-sparse-clear.t
545 test-sparse-clear.t
545 test-sparse-clone.t
546 test-sparse-clone.t
546 test-sparse-import.t
547 test-sparse-import.t
547 test-sparse-merges.t
548 test-sparse-merges.t
548 test-sparse-profiles.t
549 test-sparse-profiles.t
549 test-sparse-requirement.t
550 test-sparse-requirement.t
550 test-sparse-verbose-json.t
551 test-sparse-verbose-json.t
551 test-sparse.t
552 test-sparse.t
552 test-split.t
553 test-split.t
553 test-ssh-bundle1.t
554 test-ssh-bundle1.t
554 test-ssh-clone-r.t
555 test-ssh-clone-r.t
555 test-ssh-proto-unbundle.t
556 test-ssh-proto-unbundle.t
556 test-ssh-proto.t
557 test-ssh-proto.t
557 test-ssh-repoerror.t
558 test-ssh-repoerror.t
558 test-ssh.t
559 test-ssh.t
559 test-sshserver.py
560 test-sshserver.py
560 test-stack.t
561 test-stack.t
561 test-status-color.t
562 test-status-color.t
562 test-status-inprocess.py
563 test-status-inprocess.py
563 test-status-rev.t
564 test-status-rev.t
564 test-status-terse.t
565 test-status-terse.t
565 test-storage.py
566 test-storage.py
566 test-stream-bundle-v2.t
567 test-stream-bundle-v2.t
567 test-strict.t
568 test-strict.t
568 test-strip-cross.t
569 test-strip-cross.t
569 test-strip.t
570 test-strip.t
570 test-subrepo-deep-nested-change.t
571 test-subrepo-deep-nested-change.t
571 test-subrepo-missing.t
572 test-subrepo-missing.t
572 test-subrepo-paths.t
573 test-subrepo-paths.t
573 test-subrepo-recursion.t
574 test-subrepo-recursion.t
574 test-subrepo-relative-path.t
575 test-subrepo-relative-path.t
575 test-subrepo.t
576 test-subrepo.t
576 test-symlink-os-yes-fs-no.py
577 test-symlink-os-yes-fs-no.py
577 test-symlink-placeholder.t
578 test-symlink-placeholder.t
578 test-symlinks.t
579 test-symlinks.t
579 test-tag.t
580 test-tag.t
580 test-tags.t
581 test-tags.t
581 test-template-basic.t
582 test-template-basic.t
582 test-template-functions.t
583 test-template-functions.t
583 test-template-keywords.t
584 test-template-keywords.t
584 test-template-map.t
585 test-template-map.t
585 test-tools.t
586 test-tools.t
586 test-transplant.t
587 test-transplant.t
587 test-treemanifest.t
588 test-treemanifest.t
588 test-ui-color.py
589 test-ui-color.py
589 test-ui-config.py
590 test-ui-config.py
590 test-ui-verbosity.py
591 test-ui-verbosity.py
591 test-unamend.t
592 test-unamend.t
592 test-unbundlehash.t
593 test-unbundlehash.t
593 test-uncommit.t
594 test-uncommit.t
594 test-unified-test.t
595 test-unified-test.t
595 test-unionrepo.t
596 test-unionrepo.t
596 test-unrelated-pull.t
597 test-unrelated-pull.t
597 test-up-local-change.t
598 test-up-local-change.t
598 test-update-branches.t
599 test-update-branches.t
599 test-update-dest.t
600 test-update-dest.t
600 test-update-issue1456.t
601 test-update-issue1456.t
601 test-update-names.t
602 test-update-names.t
602 test-update-reverse.t
603 test-update-reverse.t
603 test-upgrade-repo.t
604 test-upgrade-repo.t
604 test-url-download.t
605 test-url-download.t
605 test-url-rev.t
606 test-url-rev.t
606 test-url.py
607 test-url.py
607 test-username-newline.t
608 test-username-newline.t
608 test-util.py
609 test-util.py
609 test-verify.t
610 test-verify.t
610 test-walk.t
611 test-walk.t
611 test-walkrepo.py
612 test-walkrepo.py
612 test-websub.t
613 test-websub.t
613 test-win32text.t
614 test-win32text.t
614 test-wireproto-clientreactor.py
615 test-wireproto-clientreactor.py
615 test-wireproto-command-branchmap.t
616 test-wireproto-command-branchmap.t
616 test-wireproto-command-changesetdata.t
617 test-wireproto-command-changesetdata.t
617 test-wireproto-command-filedata.t
618 test-wireproto-command-filedata.t
618 test-wireproto-command-filesdata.t
619 test-wireproto-command-filesdata.t
619 test-wireproto-command-heads.t
620 test-wireproto-command-heads.t
620 test-wireproto-command-listkeys.t
621 test-wireproto-command-listkeys.t
621 test-wireproto-command-lookup.t
622 test-wireproto-command-lookup.t
622 test-wireproto-command-manifestdata.t
623 test-wireproto-command-manifestdata.t
623 test-wireproto-command-pushkey.t
624 test-wireproto-command-pushkey.t
624 test-wireproto-framing.py
625 test-wireproto-framing.py
625 test-wireproto-serverreactor.py
626 test-wireproto-serverreactor.py
626 test-wireproto.py
627 test-wireproto.py
627 test-wsgirequest.py
628 test-wsgirequest.py
628 test-xdg.t
629 test-xdg.t
@@ -1,510 +1,510
1 #require repofncache
1 #require repofncache
2
2
3 Init repo1:
3 Init repo1:
4
4
5 $ hg init repo1
5 $ hg init repo1
6 $ cd repo1
6 $ cd repo1
7 $ echo "some text" > a
7 $ echo "some text" > a
8 $ hg add
8 $ hg add
9 adding a
9 adding a
10 $ hg ci -m first
10 $ hg ci -m first
11 $ cat .hg/store/fncache | sort
11 $ cat .hg/store/fncache | sort
12 data/a.i
12 data/a.i
13
13
14 Testing a.i/b:
14 Testing a.i/b:
15
15
16 $ mkdir a.i
16 $ mkdir a.i
17 $ echo "some other text" > a.i/b
17 $ echo "some other text" > a.i/b
18 $ hg add
18 $ hg add
19 adding a.i/b
19 adding a.i/b
20 $ hg ci -m second
20 $ hg ci -m second
21 $ cat .hg/store/fncache | sort
21 $ cat .hg/store/fncache | sort
22 data/a.i
22 data/a.i
23 data/a.i.hg/b.i
23 data/a.i.hg/b.i
24
24
25 Testing a.i.hg/c:
25 Testing a.i.hg/c:
26
26
27 $ mkdir a.i.hg
27 $ mkdir a.i.hg
28 $ echo "yet another text" > a.i.hg/c
28 $ echo "yet another text" > a.i.hg/c
29 $ hg add
29 $ hg add
30 adding a.i.hg/c
30 adding a.i.hg/c
31 $ hg ci -m third
31 $ hg ci -m third
32 $ cat .hg/store/fncache | sort
32 $ cat .hg/store/fncache | sort
33 data/a.i
33 data/a.i
34 data/a.i.hg.hg/c.i
34 data/a.i.hg.hg/c.i
35 data/a.i.hg/b.i
35 data/a.i.hg/b.i
36
36
37 Testing verify:
37 Testing verify:
38
38
39 $ hg verify
39 $ hg verify
40 checking changesets
40 checking changesets
41 checking manifests
41 checking manifests
42 crosschecking files in changesets and manifests
42 crosschecking files in changesets and manifests
43 checking files
43 checking files
44 checked 3 changesets with 3 changes to 3 files
44 checked 3 changesets with 3 changes to 3 files
45
45
46 $ rm .hg/store/fncache
46 $ rm .hg/store/fncache
47
47
48 $ hg verify
48 $ hg verify
49 checking changesets
49 checking changesets
50 checking manifests
50 checking manifests
51 crosschecking files in changesets and manifests
51 crosschecking files in changesets and manifests
52 checking files
52 checking files
53 warning: revlog 'data/a.i' not in fncache!
53 warning: revlog 'data/a.i' not in fncache!
54 warning: revlog 'data/a.i.hg/c.i' not in fncache!
54 warning: revlog 'data/a.i.hg/c.i' not in fncache!
55 warning: revlog 'data/a.i/b.i' not in fncache!
55 warning: revlog 'data/a.i/b.i' not in fncache!
56 checked 3 changesets with 3 changes to 3 files
56 checked 3 changesets with 3 changes to 3 files
57 3 warnings encountered!
57 3 warnings encountered!
58 hint: run "hg debugrebuildfncache" to recover from corrupt fncache
58 hint: run "hg debugrebuildfncache" to recover from corrupt fncache
59
59
60 Follow the hint to make sure it works
60 Follow the hint to make sure it works
61
61
62 $ hg debugrebuildfncache
62 $ hg debugrebuildfncache
63 adding data/a.i
63 adding data/a.i
64 adding data/a.i.hg/c.i
64 adding data/a.i.hg/c.i
65 adding data/a.i/b.i
65 adding data/a.i/b.i
66 3 items added, 0 removed from fncache
66 3 items added, 0 removed from fncache
67
67
68 $ hg verify
68 $ hg verify
69 checking changesets
69 checking changesets
70 checking manifests
70 checking manifests
71 crosschecking files in changesets and manifests
71 crosschecking files in changesets and manifests
72 checking files
72 checking files
73 checked 3 changesets with 3 changes to 3 files
73 checked 3 changesets with 3 changes to 3 files
74
74
75 $ cd ..
75 $ cd ..
76
76
77 Non store repo:
77 Non store repo:
78
78
79 $ hg --config format.usestore=False init foo
79 $ hg --config format.usestore=False init foo
80 $ cd foo
80 $ cd foo
81 $ mkdir tst.d
81 $ mkdir tst.d
82 $ echo foo > tst.d/foo
82 $ echo foo > tst.d/foo
83 $ hg ci -Amfoo
83 $ hg ci -Amfoo
84 adding tst.d/foo
84 adding tst.d/foo
85 $ find .hg | sort
85 $ find .hg | sort
86 .hg
86 .hg
87 .hg/00changelog.i
87 .hg/00changelog.i
88 .hg/00manifest.i
88 .hg/00manifest.i
89 .hg/cache
89 .hg/cache
90 .hg/cache/branch2-served
90 .hg/cache/branch2-served
91 .hg/cache/manifestfulltextcache (reporevlogstore !)
91 .hg/cache/manifestfulltextcache (reporevlogstore !)
92 .hg/cache/rbc-names-v1
92 .hg/cache/rbc-names-v1
93 .hg/cache/rbc-revs-v1
93 .hg/cache/rbc-revs-v1
94 .hg/data
94 .hg/data
95 .hg/data/tst.d.hg
95 .hg/data/tst.d.hg
96 .hg/data/tst.d.hg/foo.i
96 .hg/data/tst.d.hg/foo.i
97 .hg/dirstate
97 .hg/dirstate
98 .hg/fsmonitor.state (fsmonitor !)
98 .hg/fsmonitor.state (fsmonitor !)
99 .hg/last-message.txt
99 .hg/last-message.txt
100 .hg/phaseroots
100 .hg/phaseroots
101 .hg/requires
101 .hg/requires
102 .hg/undo
102 .hg/undo
103 .hg/undo.backup.dirstate
103 .hg/undo.backup.dirstate
104 .hg/undo.backupfiles
104 .hg/undo.backupfiles
105 .hg/undo.bookmarks
105 .hg/undo.bookmarks
106 .hg/undo.branch
106 .hg/undo.branch
107 .hg/undo.desc
107 .hg/undo.desc
108 .hg/undo.dirstate
108 .hg/undo.dirstate
109 .hg/undo.phaseroots
109 .hg/undo.phaseroots
110 $ cd ..
110 $ cd ..
111
111
112 Non fncache repo:
112 Non fncache repo:
113
113
114 $ hg --config format.usefncache=False init bar
114 $ hg --config format.usefncache=False init bar
115 $ cd bar
115 $ cd bar
116 $ mkdir tst.d
116 $ mkdir tst.d
117 $ echo foo > tst.d/Foo
117 $ echo foo > tst.d/Foo
118 $ hg ci -Amfoo
118 $ hg ci -Amfoo
119 adding tst.d/Foo
119 adding tst.d/Foo
120 $ find .hg | sort
120 $ find .hg | sort
121 .hg
121 .hg
122 .hg/00changelog.i
122 .hg/00changelog.i
123 .hg/cache
123 .hg/cache
124 .hg/cache/branch2-served
124 .hg/cache/branch2-served
125 .hg/cache/manifestfulltextcache (reporevlogstore !)
125 .hg/cache/manifestfulltextcache (reporevlogstore !)
126 .hg/cache/rbc-names-v1
126 .hg/cache/rbc-names-v1
127 .hg/cache/rbc-revs-v1
127 .hg/cache/rbc-revs-v1
128 .hg/dirstate
128 .hg/dirstate
129 .hg/fsmonitor.state (fsmonitor !)
129 .hg/fsmonitor.state (fsmonitor !)
130 .hg/last-message.txt
130 .hg/last-message.txt
131 .hg/requires
131 .hg/requires
132 .hg/store
132 .hg/store
133 .hg/store/00changelog.i
133 .hg/store/00changelog.i
134 .hg/store/00manifest.i
134 .hg/store/00manifest.i
135 .hg/store/data
135 .hg/store/data
136 .hg/store/data/tst.d.hg
136 .hg/store/data/tst.d.hg
137 .hg/store/data/tst.d.hg/_foo.i
137 .hg/store/data/tst.d.hg/_foo.i
138 .hg/store/phaseroots
138 .hg/store/phaseroots
139 .hg/store/undo
139 .hg/store/undo
140 .hg/store/undo.backupfiles
140 .hg/store/undo.backupfiles
141 .hg/store/undo.phaseroots
141 .hg/store/undo.phaseroots
142 .hg/undo.backup.dirstate
142 .hg/undo.backup.dirstate
143 .hg/undo.bookmarks
143 .hg/undo.bookmarks
144 .hg/undo.branch
144 .hg/undo.branch
145 .hg/undo.desc
145 .hg/undo.desc
146 .hg/undo.dirstate
146 .hg/undo.dirstate
147 $ cd ..
147 $ cd ..
148
148
149 Encoding of reserved / long paths in the store
149 Encoding of reserved / long paths in the store
150
150
151 $ hg init r2
151 $ hg init r2
152 $ cd r2
152 $ cd r2
153 $ cat <<EOF > .hg/hgrc
153 $ cat <<EOF > .hg/hgrc
154 > [ui]
154 > [ui]
155 > portablefilenames = ignore
155 > portablefilenames = ignore
156 > EOF
156 > EOF
157
157
158 $ hg import -q --bypass - <<EOF
158 $ hg import -q --bypass - <<EOF
159 > # HG changeset patch
159 > # HG changeset patch
160 > # User test
160 > # User test
161 > # Date 0 0
161 > # Date 0 0
162 > # Node ID 1c7a2f7cb77be1a0def34e4c7cabc562ad98fbd7
162 > # Node ID 1c7a2f7cb77be1a0def34e4c7cabc562ad98fbd7
163 > # Parent 0000000000000000000000000000000000000000
163 > # Parent 0000000000000000000000000000000000000000
164 > 1
164 > 1
165 >
165 >
166 > diff --git a/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz b/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz
166 > diff --git a/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz b/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz
167 > new file mode 100644
167 > new file mode 100644
168 > --- /dev/null
168 > --- /dev/null
169 > +++ b/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz
169 > +++ b/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz
170 > @@ -0,0 +1,1 @@
170 > @@ -0,0 +1,1 @@
171 > +foo
171 > +foo
172 > diff --git a/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT b/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT
172 > diff --git a/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT b/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT
173 > new file mode 100644
173 > new file mode 100644
174 > --- /dev/null
174 > --- /dev/null
175 > +++ b/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT
175 > +++ b/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT
176 > @@ -0,0 +1,1 @@
176 > @@ -0,0 +1,1 @@
177 > +foo
177 > +foo
178 > diff --git a/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt b/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt
178 > diff --git a/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt b/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt
179 > new file mode 100644
179 > new file mode 100644
180 > --- /dev/null
180 > --- /dev/null
181 > +++ b/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt
181 > +++ b/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt
182 > @@ -0,0 +1,1 @@
182 > @@ -0,0 +1,1 @@
183 > +foo
183 > +foo
184 > diff --git a/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c b/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c
184 > diff --git a/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c b/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c
185 > new file mode 100644
185 > new file mode 100644
186 > --- /dev/null
186 > --- /dev/null
187 > +++ b/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c
187 > +++ b/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c
188 > @@ -0,0 +1,1 @@
188 > @@ -0,0 +1,1 @@
189 > +foo
189 > +foo
190 > diff --git a/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider b/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider
190 > diff --git a/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider b/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider
191 > new file mode 100644
191 > new file mode 100644
192 > --- /dev/null
192 > --- /dev/null
193 > +++ b/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider
193 > +++ b/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider
194 > @@ -0,0 +1,1 @@
194 > @@ -0,0 +1,1 @@
195 > +foo
195 > +foo
196 > EOF
196 > EOF
197
197
198 $ find .hg/store -name *.i | sort
198 $ find .hg/store -name *.i | sort
199 .hg/store/00changelog.i
199 .hg/store/00changelog.i
200 .hg/store/00manifest.i
200 .hg/store/00manifest.i
201 .hg/store/data/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i
201 .hg/store/data/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i
202 .hg/store/dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxx168e07b38e65eff86ab579afaaa8e30bfbe0f35f.i
202 .hg/store/dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxx168e07b38e65eff86ab579afaaa8e30bfbe0f35f.i
203 .hg/store/dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i
203 .hg/store/dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i
204 .hg/store/dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i
204 .hg/store/dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i
205 .hg/store/dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilename0d8e1f4187c650e2f1fdca9fd90f786bc0976b6b.i
205 .hg/store/dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilename0d8e1f4187c650e2f1fdca9fd90f786bc0976b6b.i
206
206
207 $ cd ..
207 $ cd ..
208
208
209 Aborting lock does not prevent fncache writes
209 Aborting lock does not prevent fncache writes
210
210
211 $ cat > exceptionext.py <<EOF
211 $ cat > exceptionext.py <<EOF
212 > from __future__ import absolute_import
212 > from __future__ import absolute_import
213 > import os
213 > import os
214 > from mercurial import commands, error, extensions
214 > from mercurial import commands, error, extensions
215 >
215 >
216 > def lockexception(orig, vfs, lockname, wait, releasefn, *args, **kwargs):
216 > def lockexception(orig, vfs, lockname, wait, releasefn, *args, **kwargs):
217 > def releasewrap():
217 > def releasewrap():
218 > l.held = False # ensure __del__ is a noop
218 > l.held = False # ensure __del__ is a noop
219 > raise error.Abort("forced lock failure")
219 > raise error.Abort("forced lock failure")
220 > l = orig(vfs, lockname, wait, releasewrap, *args, **kwargs)
220 > l = orig(vfs, lockname, wait, releasewrap, *args, **kwargs)
221 > return l
221 > return l
222 >
222 >
223 > def reposetup(ui, repo):
223 > def reposetup(ui, repo):
224 > extensions.wrapfunction(repo, '_lock', lockexception)
224 > extensions.wrapfunction(repo, '_lock', lockexception)
225 >
225 >
226 > cmdtable = {}
226 > cmdtable = {}
227 >
227 >
228 > # wrap "commit" command to prevent wlock from being '__del__()'-ed
228 > # wrap "commit" command to prevent wlock from being '__del__()'-ed
229 > # at the end of dispatching (for intentional "forced lcok failure")
229 > # at the end of dispatching (for intentional "forced lcok failure")
230 > def commitwrap(orig, ui, repo, *pats, **opts):
230 > def commitwrap(orig, ui, repo, *pats, **opts):
231 > repo = repo.unfiltered() # to use replaced repo._lock certainly
231 > repo = repo.unfiltered() # to use replaced repo._lock certainly
232 > wlock = repo.wlock()
232 > wlock = repo.wlock()
233 > try:
233 > try:
234 > return orig(ui, repo, *pats, **opts)
234 > return orig(ui, repo, *pats, **opts)
235 > finally:
235 > finally:
236 > # multiple 'relase()' is needed for complete releasing wlock,
236 > # multiple 'relase()' is needed for complete releasing wlock,
237 > # because "forced" abort at last releasing store lock
237 > # because "forced" abort at last releasing store lock
238 > # prevents wlock from being released at same 'lockmod.release()'
238 > # prevents wlock from being released at same 'lockmod.release()'
239 > for i in range(wlock.held):
239 > for i in range(wlock.held):
240 > wlock.release()
240 > wlock.release()
241 >
241 >
242 > def extsetup(ui):
242 > def extsetup(ui):
243 > extensions.wrapcommand(commands.table, b"commit", commitwrap)
243 > extensions.wrapcommand(commands.table, b"commit", commitwrap)
244 > EOF
244 > EOF
245 $ extpath=`pwd`/exceptionext.py
245 $ extpath=`pwd`/exceptionext.py
246 $ hg init fncachetxn
246 $ hg init fncachetxn
247 $ cd fncachetxn
247 $ cd fncachetxn
248 $ printf "[extensions]\nexceptionext=$extpath\n" >> .hg/hgrc
248 $ printf "[extensions]\nexceptionext=$extpath\n" >> .hg/hgrc
249 $ touch y
249 $ touch y
250 $ hg ci -qAm y
250 $ hg ci -qAm y
251 abort: forced lock failure
251 abort: forced lock failure
252 [255]
252 [255]
253 $ cat .hg/store/fncache
253 $ cat .hg/store/fncache
254 data/y.i
254 data/y.i
255
255
256 Aborting transaction prevents fncache change
256 Aborting transaction prevents fncache change
257
257
258 $ cat > ../exceptionext.py <<EOF
258 $ cat > ../exceptionext.py <<EOF
259 > from __future__ import absolute_import
259 > from __future__ import absolute_import
260 > import os
260 > import os
261 > from mercurial import commands, error, extensions, localrepo
261 > from mercurial import commands, error, extensions, localrepo
262 >
262 >
263 > def wrapper(orig, self, *args, **kwargs):
263 > def wrapper(orig, self, *args, **kwargs):
264 > tr = orig(self, *args, **kwargs)
264 > tr = orig(self, *args, **kwargs)
265 > def fail(tr):
265 > def fail(tr):
266 > raise error.Abort(b"forced transaction failure")
266 > raise error.Abort(b"forced transaction failure")
267 > # zzz prefix to ensure it sorted after store.write
267 > # zzz prefix to ensure it sorted after store.write
268 > tr.addfinalize(b'zzz-forcefails', fail)
268 > tr.addfinalize(b'zzz-forcefails', fail)
269 > return tr
269 > return tr
270 >
270 >
271 > def uisetup(ui):
271 > def uisetup(ui):
272 > extensions.wrapfunction(
272 > extensions.wrapfunction(
273 > localrepo.localrepository, b'transaction', wrapper)
273 > localrepo.localrepository, b'transaction', wrapper)
274 >
274 >
275 > cmdtable = {}
275 > cmdtable = {}
276 >
276 >
277 > EOF
277 > EOF
278
278
279 Clean cached version
279 Clean cached version
280 $ rm -f "${extpath}c"
280 $ rm -f "${extpath}c"
281 $ rm -Rf "`dirname $extpath`/__pycache__"
281 $ rm -Rf "`dirname $extpath`/__pycache__"
282
282
283 $ touch z
283 $ touch z
284 $ hg ci -qAm z
284 $ hg ci -qAm z
285 transaction abort!
285 transaction abort!
286 rollback completed
286 rollback completed
287 abort: forced transaction failure
287 abort: forced transaction failure
288 [255]
288 [255]
289 $ cat .hg/store/fncache
289 $ cat .hg/store/fncache
290 data/y.i
290 data/y.i
291
291
292 Aborted transactions can be recovered later
292 Aborted transactions can be recovered later
293
293
294 $ cat > ../exceptionext.py <<EOF
294 $ cat > ../exceptionext.py <<EOF
295 > from __future__ import absolute_import
295 > from __future__ import absolute_import
296 > import os
296 > import os
297 > from mercurial import (
297 > from mercurial import (
298 > commands,
298 > commands,
299 > error,
299 > error,
300 > extensions,
300 > extensions,
301 > localrepo,
301 > localrepo,
302 > transaction,
302 > transaction,
303 > )
303 > )
304 >
304 >
305 > def trwrapper(orig, self, *args, **kwargs):
305 > def trwrapper(orig, self, *args, **kwargs):
306 > tr = orig(self, *args, **kwargs)
306 > tr = orig(self, *args, **kwargs)
307 > def fail(tr):
307 > def fail(tr):
308 > raise error.Abort("forced transaction failure")
308 > raise error.Abort(b"forced transaction failure")
309 > # zzz prefix to ensure it sorted after store.write
309 > # zzz prefix to ensure it sorted after store.write
310 > tr.addfinalize('zzz-forcefails', fail)
310 > tr.addfinalize(b'zzz-forcefails', fail)
311 > return tr
311 > return tr
312 >
312 >
313 > def abortwrapper(orig, self, *args, **kwargs):
313 > def abortwrapper(orig, self, *args, **kwargs):
314 > raise error.Abort("forced transaction failure")
314 > raise error.Abort(b"forced transaction failure")
315 >
315 >
316 > def uisetup(ui):
316 > def uisetup(ui):
317 > extensions.wrapfunction(localrepo.localrepository, 'transaction',
317 > extensions.wrapfunction(localrepo.localrepository, 'transaction',
318 > trwrapper)
318 > trwrapper)
319 > extensions.wrapfunction(transaction.transaction, '_abort',
319 > extensions.wrapfunction(transaction.transaction, '_abort',
320 > abortwrapper)
320 > abortwrapper)
321 >
321 >
322 > cmdtable = {}
322 > cmdtable = {}
323 >
323 >
324 > EOF
324 > EOF
325
325
326 Clean cached versions
326 Clean cached versions
327 $ rm -f "${extpath}c"
327 $ rm -f "${extpath}c"
328 $ rm -Rf "`dirname $extpath`/__pycache__"
328 $ rm -Rf "`dirname $extpath`/__pycache__"
329
329
330 $ hg up -q 1
330 $ hg up -q 1
331 $ touch z
331 $ touch z
332 $ hg ci -qAm z 2>/dev/null
332 $ hg ci -qAm z 2>/dev/null
333 [255]
333 [255]
334 $ cat .hg/store/fncache | sort
334 $ cat .hg/store/fncache | sort
335 data/y.i
335 data/y.i
336 data/z.i
336 data/z.i
337 $ hg recover
337 $ hg recover
338 rolling back interrupted transaction
338 rolling back interrupted transaction
339 checking changesets
339 checking changesets
340 checking manifests
340 checking manifests
341 crosschecking files in changesets and manifests
341 crosschecking files in changesets and manifests
342 checking files
342 checking files
343 checked 1 changesets with 1 changes to 1 files
343 checked 1 changesets with 1 changes to 1 files
344 $ cat .hg/store/fncache
344 $ cat .hg/store/fncache
345 data/y.i
345 data/y.i
346
346
347 $ cd ..
347 $ cd ..
348
348
349 debugrebuildfncache does nothing unless repo has fncache requirement
349 debugrebuildfncache does nothing unless repo has fncache requirement
350
350
351 $ hg --config format.usefncache=false init nofncache
351 $ hg --config format.usefncache=false init nofncache
352 $ cd nofncache
352 $ cd nofncache
353 $ hg debugrebuildfncache
353 $ hg debugrebuildfncache
354 (not rebuilding fncache because repository does not support fncache)
354 (not rebuilding fncache because repository does not support fncache)
355
355
356 $ cd ..
356 $ cd ..
357
357
358 debugrebuildfncache works on empty repository
358 debugrebuildfncache works on empty repository
359
359
360 $ hg init empty
360 $ hg init empty
361 $ cd empty
361 $ cd empty
362 $ hg debugrebuildfncache
362 $ hg debugrebuildfncache
363 fncache already up to date
363 fncache already up to date
364 $ cd ..
364 $ cd ..
365
365
366 debugrebuildfncache on an up to date repository no-ops
366 debugrebuildfncache on an up to date repository no-ops
367
367
368 $ hg init repo
368 $ hg init repo
369 $ cd repo
369 $ cd repo
370 $ echo initial > foo
370 $ echo initial > foo
371 $ echo initial > .bar
371 $ echo initial > .bar
372 $ hg commit -A -m initial
372 $ hg commit -A -m initial
373 adding .bar
373 adding .bar
374 adding foo
374 adding foo
375
375
376 $ cat .hg/store/fncache | sort
376 $ cat .hg/store/fncache | sort
377 data/.bar.i
377 data/.bar.i
378 data/foo.i
378 data/foo.i
379
379
380 $ hg debugrebuildfncache
380 $ hg debugrebuildfncache
381 fncache already up to date
381 fncache already up to date
382
382
383 debugrebuildfncache restores deleted fncache file
383 debugrebuildfncache restores deleted fncache file
384
384
385 $ rm -f .hg/store/fncache
385 $ rm -f .hg/store/fncache
386 $ hg debugrebuildfncache
386 $ hg debugrebuildfncache
387 adding data/.bar.i
387 adding data/.bar.i
388 adding data/foo.i
388 adding data/foo.i
389 2 items added, 0 removed from fncache
389 2 items added, 0 removed from fncache
390
390
391 $ cat .hg/store/fncache | sort
391 $ cat .hg/store/fncache | sort
392 data/.bar.i
392 data/.bar.i
393 data/foo.i
393 data/foo.i
394
394
395 Rebuild after rebuild should no-op
395 Rebuild after rebuild should no-op
396
396
397 $ hg debugrebuildfncache
397 $ hg debugrebuildfncache
398 fncache already up to date
398 fncache already up to date
399
399
400 A single missing file should get restored, an extra file should be removed
400 A single missing file should get restored, an extra file should be removed
401
401
402 $ cat > .hg/store/fncache << EOF
402 $ cat > .hg/store/fncache << EOF
403 > data/foo.i
403 > data/foo.i
404 > data/bad-entry.i
404 > data/bad-entry.i
405 > EOF
405 > EOF
406
406
407 $ hg debugrebuildfncache
407 $ hg debugrebuildfncache
408 removing data/bad-entry.i
408 removing data/bad-entry.i
409 adding data/.bar.i
409 adding data/.bar.i
410 1 items added, 1 removed from fncache
410 1 items added, 1 removed from fncache
411
411
412 $ cat .hg/store/fncache | sort
412 $ cat .hg/store/fncache | sort
413 data/.bar.i
413 data/.bar.i
414 data/foo.i
414 data/foo.i
415
415
416 $ cd ..
416 $ cd ..
417
417
418 Try a simple variation without dotencode to ensure fncache is ignorant of encoding
418 Try a simple variation without dotencode to ensure fncache is ignorant of encoding
419
419
420 $ hg --config format.dotencode=false init nodotencode
420 $ hg --config format.dotencode=false init nodotencode
421 $ cd nodotencode
421 $ cd nodotencode
422 $ echo initial > foo
422 $ echo initial > foo
423 $ echo initial > .bar
423 $ echo initial > .bar
424 $ hg commit -A -m initial
424 $ hg commit -A -m initial
425 adding .bar
425 adding .bar
426 adding foo
426 adding foo
427
427
428 $ cat .hg/store/fncache | sort
428 $ cat .hg/store/fncache | sort
429 data/.bar.i
429 data/.bar.i
430 data/foo.i
430 data/foo.i
431
431
432 $ rm .hg/store/fncache
432 $ rm .hg/store/fncache
433 $ hg debugrebuildfncache
433 $ hg debugrebuildfncache
434 adding data/.bar.i
434 adding data/.bar.i
435 adding data/foo.i
435 adding data/foo.i
436 2 items added, 0 removed from fncache
436 2 items added, 0 removed from fncache
437
437
438 $ cat .hg/store/fncache | sort
438 $ cat .hg/store/fncache | sort
439 data/.bar.i
439 data/.bar.i
440 data/foo.i
440 data/foo.i
441
441
442 $ cd ..
442 $ cd ..
443
443
444 In repositories that have accumulated a large number of files over time, the
444 In repositories that have accumulated a large number of files over time, the
445 fncache file is going to be large. If we possibly can avoid loading it, so much the better.
445 fncache file is going to be large. If we possibly can avoid loading it, so much the better.
446 The cache should not loaded when committing changes to existing files, or when unbundling
446 The cache should not loaded when committing changes to existing files, or when unbundling
447 changesets that only contain changes to existing files:
447 changesets that only contain changes to existing files:
448
448
449 $ cat > fncacheloadwarn.py << EOF
449 $ cat > fncacheloadwarn.py << EOF
450 > from __future__ import absolute_import
450 > from __future__ import absolute_import
451 > from mercurial import extensions, localrepo
451 > from mercurial import extensions, localrepo
452 >
452 >
453 > def extsetup(ui):
453 > def extsetup(ui):
454 > def wrapstore(orig, requirements, *args):
454 > def wrapstore(orig, requirements, *args):
455 > store = orig(requirements, *args)
455 > store = orig(requirements, *args)
456 > if 'store' in requirements and 'fncache' in requirements:
456 > if b'store' in requirements and b'fncache' in requirements:
457 > instrumentfncachestore(store, ui)
457 > instrumentfncachestore(store, ui)
458 > return store
458 > return store
459 > extensions.wrapfunction(localrepo, 'makestore', wrapstore)
459 > extensions.wrapfunction(localrepo, 'makestore', wrapstore)
460 >
460 >
461 > def instrumentfncachestore(fncachestore, ui):
461 > def instrumentfncachestore(fncachestore, ui):
462 > class instrumentedfncache(type(fncachestore.fncache)):
462 > class instrumentedfncache(type(fncachestore.fncache)):
463 > def _load(self):
463 > def _load(self):
464 > ui.warn('fncache load triggered!\n')
464 > ui.warn(b'fncache load triggered!\n')
465 > super(instrumentedfncache, self)._load()
465 > super(instrumentedfncache, self)._load()
466 > fncachestore.fncache.__class__ = instrumentedfncache
466 > fncachestore.fncache.__class__ = instrumentedfncache
467 > EOF
467 > EOF
468
468
469 $ fncachextpath=`pwd`/fncacheloadwarn.py
469 $ fncachextpath=`pwd`/fncacheloadwarn.py
470 $ hg init nofncacheload
470 $ hg init nofncacheload
471 $ cd nofncacheload
471 $ cd nofncacheload
472 $ printf "[extensions]\nfncacheloadwarn=$fncachextpath\n" >> .hg/hgrc
472 $ printf "[extensions]\nfncacheloadwarn=$fncachextpath\n" >> .hg/hgrc
473
473
474 A new file should trigger a load, as we'd want to update the fncache set in that case:
474 A new file should trigger a load, as we'd want to update the fncache set in that case:
475
475
476 $ touch foo
476 $ touch foo
477 $ hg ci -qAm foo
477 $ hg ci -qAm foo
478 fncache load triggered!
478 fncache load triggered!
479
479
480 But modifying that file should not:
480 But modifying that file should not:
481
481
482 $ echo bar >> foo
482 $ echo bar >> foo
483 $ hg ci -qm foo
483 $ hg ci -qm foo
484
484
485 If a transaction has been aborted, the zero-size truncated index file will
485 If a transaction has been aborted, the zero-size truncated index file will
486 not prevent the fncache from being loaded; rather than actually abort
486 not prevent the fncache from being loaded; rather than actually abort
487 a transaction, we simulate the situation by creating a zero-size index file:
487 a transaction, we simulate the situation by creating a zero-size index file:
488
488
489 $ touch .hg/store/data/bar.i
489 $ touch .hg/store/data/bar.i
490 $ touch bar
490 $ touch bar
491 $ hg ci -qAm bar
491 $ hg ci -qAm bar
492 fncache load triggered!
492 fncache load triggered!
493
493
494 Unbundling should follow the same rules; existing files should not cause a load:
494 Unbundling should follow the same rules; existing files should not cause a load:
495
495
496 $ hg clone -q . tobundle
496 $ hg clone -q . tobundle
497 $ echo 'new line' > tobundle/bar
497 $ echo 'new line' > tobundle/bar
498 $ hg -R tobundle ci -qm bar
498 $ hg -R tobundle ci -qm bar
499 $ hg -R tobundle bundle -q barupdated.hg
499 $ hg -R tobundle bundle -q barupdated.hg
500 $ hg unbundle -q barupdated.hg
500 $ hg unbundle -q barupdated.hg
501
501
502 but adding new files should:
502 but adding new files should:
503
503
504 $ touch tobundle/newfile
504 $ touch tobundle/newfile
505 $ hg -R tobundle ci -qAm newfile
505 $ hg -R tobundle ci -qAm newfile
506 $ hg -R tobundle bundle -q newfile.hg
506 $ hg -R tobundle bundle -q newfile.hg
507 $ hg unbundle -q newfile.hg
507 $ hg unbundle -q newfile.hg
508 fncache load triggered!
508 fncache load triggered!
509
509
510 $ cd ..
510 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now