##// END OF EJS Templates
py3: glob some difference between py2 and py3 output...
Pulkit Goyal -
r40255:7ba6b880 default
parent child Browse files
Show More
@@ -1,600 +1,601 b''
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-atomictempfile.py
17 test-atomictempfile.py
18 test-audit-path.t
18 test-audit-path.t
19 test-audit-subrepo.t
19 test-audit-subrepo.t
20 test-automv.t
20 test-automv.t
21 test-backout.t
21 test-backout.t
22 test-backwards-remove.t
22 test-backwards-remove.t
23 test-bad-pull.t
23 test-bad-pull.t
24 test-basic.t
24 test-basic.t
25 test-bdiff.py
25 test-bdiff.py
26 test-bheads.t
26 test-bheads.t
27 test-bisect.t
27 test-bisect.t
28 test-bisect2.t
28 test-bisect2.t
29 test-bisect3.t
29 test-bisect3.t
30 test-blackbox.t
30 test-blackbox.t
31 test-bookmarks-current.t
31 test-bookmarks-current.t
32 test-bookmarks-merge.t
32 test-bookmarks-merge.t
33 test-bookmarks-pushpull.t
33 test-bookmarks-pushpull.t
34 test-bookmarks-rebase.t
34 test-bookmarks-rebase.t
35 test-bookmarks-strip.t
35 test-bookmarks-strip.t
36 test-bookmarks.t
36 test-bookmarks.t
37 test-branch-change.t
37 test-branch-change.t
38 test-branch-option.t
38 test-branch-option.t
39 test-branch-tag-confict.t
39 test-branch-tag-confict.t
40 test-branches.t
40 test-branches.t
41 test-bundle-phases.t
41 test-bundle-phases.t
42 test-bundle-r.t
42 test-bundle-r.t
43 test-bundle-type.t
43 test-bundle-type.t
44 test-bundle-vs-outgoing.t
44 test-bundle-vs-outgoing.t
45 test-bundle.t
45 test-bundle.t
46 test-bundle2-exchange.t
46 test-bundle2-exchange.t
47 test-bundle2-format.t
47 test-bundle2-format.t
48 test-bundle2-multiple-changegroups.t
48 test-bundle2-multiple-changegroups.t
49 test-bundle2-pushback.t
49 test-bundle2-pushback.t
50 test-bundle2-remote-changegroup.t
50 test-bundle2-remote-changegroup.t
51 test-cappedreader.py
51 test-cappedreader.py
52 test-casecollision.t
52 test-casecollision.t
53 test-cat.t
53 test-cat.t
54 test-cbor.py
54 test-cbor.py
55 test-censor.t
55 test-censor.t
56 test-changelog-exec.t
56 test-changelog-exec.t
57 test-check-code.t
57 test-check-code.t
58 test-check-commit.t
58 test-check-commit.t
59 test-check-execute.t
59 test-check-execute.t
60 test-check-interfaces.py
60 test-check-interfaces.py
61 test-check-module-imports.t
61 test-check-module-imports.t
62 test-check-py3-compat.t
62 test-check-py3-compat.t
63 test-check-pyflakes.t
63 test-check-pyflakes.t
64 test-check-pylint.t
64 test-check-pylint.t
65 test-check-shbang.t
65 test-check-shbang.t
66 test-children.t
66 test-children.t
67 test-clone-cgi.t
67 test-clone-cgi.t
68 test-clone-pull-corruption.t
68 test-clone-pull-corruption.t
69 test-clone-r.t
69 test-clone-r.t
70 test-clone-uncompressed.t
70 test-clone-uncompressed.t
71 test-clone-update-order.t
71 test-clone-update-order.t
72 test-clone.t
72 test-clonebundles.t
73 test-clonebundles.t
73 test-commit-amend.t
74 test-commit-amend.t
74 test-commit-interactive.t
75 test-commit-interactive.t
75 test-commit-multiple.t
76 test-commit-multiple.t
76 test-commit-unresolved.t
77 test-commit-unresolved.t
77 test-commit.t
78 test-commit.t
78 test-committer.t
79 test-committer.t
79 test-completion.t
80 test-completion.t
80 test-config-env.py
81 test-config-env.py
81 test-config.t
82 test-config.t
82 test-conflict.t
83 test-conflict.t
83 test-confused-revert.t
84 test-confused-revert.t
84 test-context.py
85 test-context.py
85 test-contrib-check-code.t
86 test-contrib-check-code.t
86 test-contrib-check-commit.t
87 test-contrib-check-commit.t
87 test-contrib-dumprevlog.t
88 test-contrib-dumprevlog.t
88 test-contrib-perf.t
89 test-contrib-perf.t
89 test-contrib-testparseutil.t
90 test-contrib-testparseutil.t
90 test-convert-authormap.t
91 test-convert-authormap.t
91 test-convert-clonebranches.t
92 test-convert-clonebranches.t
92 test-convert-cvs-branch.t
93 test-convert-cvs-branch.t
93 test-convert-cvs-detectmerge.t
94 test-convert-cvs-detectmerge.t
94 test-convert-cvs-synthetic.t
95 test-convert-cvs-synthetic.t
95 test-convert-cvs.t
96 test-convert-cvs.t
96 test-convert-cvsnt-mergepoints.t
97 test-convert-cvsnt-mergepoints.t
97 test-convert-datesort.t
98 test-convert-datesort.t
98 test-convert-filemap.t
99 test-convert-filemap.t
99 test-convert-hg-sink.t
100 test-convert-hg-sink.t
100 test-convert-hg-source.t
101 test-convert-hg-source.t
101 test-convert-hg-startrev.t
102 test-convert-hg-startrev.t
102 test-convert-splicemap.t
103 test-convert-splicemap.t
103 test-convert-tagsbranch-topology.t
104 test-convert-tagsbranch-topology.t
104 test-copy-move-merge.t
105 test-copy-move-merge.t
105 test-copy.t
106 test-copy.t
106 test-copytrace-heuristics.t
107 test-copytrace-heuristics.t
107 test-debugbuilddag.t
108 test-debugbuilddag.t
108 test-debugbundle.t
109 test-debugbundle.t
109 test-debugcommands.t
110 test-debugcommands.t
110 test-debugextensions.t
111 test-debugextensions.t
111 test-debugindexdot.t
112 test-debugindexdot.t
112 test-debugrename.t
113 test-debugrename.t
113 test-default-push.t
114 test-default-push.t
114 test-diff-antipatience.t
115 test-diff-antipatience.t
115 test-diff-binary-file.t
116 test-diff-binary-file.t
116 test-diff-change.t
117 test-diff-change.t
117 test-diff-copy-depth.t
118 test-diff-copy-depth.t
118 test-diff-hashes.t
119 test-diff-hashes.t
119 test-diff-ignore-whitespace.t
120 test-diff-ignore-whitespace.t
120 test-diff-indent-heuristic.t
121 test-diff-indent-heuristic.t
121 test-diff-issue2761.t
122 test-diff-issue2761.t
122 test-diff-newlines.t
123 test-diff-newlines.t
123 test-diff-reverse.t
124 test-diff-reverse.t
124 test-diff-subdir.t
125 test-diff-subdir.t
125 test-diff-unified.t
126 test-diff-unified.t
126 test-diff-upgrade.t
127 test-diff-upgrade.t
127 test-diffdir.t
128 test-diffdir.t
128 test-diffstat.t
129 test-diffstat.t
129 test-directaccess.t
130 test-directaccess.t
130 test-dirstate-backup.t
131 test-dirstate-backup.t
131 test-dirstate-nonnormalset.t
132 test-dirstate-nonnormalset.t
132 test-dirstate.t
133 test-dirstate.t
133 test-dispatch.py
134 test-dispatch.py
134 test-doctest.py
135 test-doctest.py
135 test-double-merge.t
136 test-double-merge.t
136 test-drawdag.t
137 test-drawdag.t
137 test-duplicateoptions.py
138 test-duplicateoptions.py
138 test-editor-filename.t
139 test-editor-filename.t
139 test-empty-dir.t
140 test-empty-dir.t
140 test-empty-file.t
141 test-empty-file.t
141 test-empty-group.t
142 test-empty-group.t
142 test-empty.t
143 test-empty.t
143 test-encode.t
144 test-encode.t
144 test-encoding-func.py
145 test-encoding-func.py
145 test-encoding.t
146 test-encoding.t
146 test-eol-add.t
147 test-eol-add.t
147 test-eol-clone.t
148 test-eol-clone.t
148 test-eol-hook.t
149 test-eol-hook.t
149 test-eol-patch.t
150 test-eol-patch.t
150 test-eol-tag.t
151 test-eol-tag.t
151 test-eol-update.t
152 test-eol-update.t
152 test-eol.t
153 test-eol.t
153 test-eolfilename.t
154 test-eolfilename.t
154 test-excessive-merge.t
155 test-excessive-merge.t
155 test-exchange-obsmarkers-case-A1.t
156 test-exchange-obsmarkers-case-A1.t
156 test-exchange-obsmarkers-case-A2.t
157 test-exchange-obsmarkers-case-A2.t
157 test-exchange-obsmarkers-case-A3.t
158 test-exchange-obsmarkers-case-A3.t
158 test-exchange-obsmarkers-case-A4.t
159 test-exchange-obsmarkers-case-A4.t
159 test-exchange-obsmarkers-case-A5.t
160 test-exchange-obsmarkers-case-A5.t
160 test-exchange-obsmarkers-case-A6.t
161 test-exchange-obsmarkers-case-A6.t
161 test-exchange-obsmarkers-case-A7.t
162 test-exchange-obsmarkers-case-A7.t
162 test-exchange-obsmarkers-case-B1.t
163 test-exchange-obsmarkers-case-B1.t
163 test-exchange-obsmarkers-case-B2.t
164 test-exchange-obsmarkers-case-B2.t
164 test-exchange-obsmarkers-case-B3.t
165 test-exchange-obsmarkers-case-B3.t
165 test-exchange-obsmarkers-case-B4.t
166 test-exchange-obsmarkers-case-B4.t
166 test-exchange-obsmarkers-case-B5.t
167 test-exchange-obsmarkers-case-B5.t
167 test-exchange-obsmarkers-case-B6.t
168 test-exchange-obsmarkers-case-B6.t
168 test-exchange-obsmarkers-case-B7.t
169 test-exchange-obsmarkers-case-B7.t
169 test-exchange-obsmarkers-case-C1.t
170 test-exchange-obsmarkers-case-C1.t
170 test-exchange-obsmarkers-case-C2.t
171 test-exchange-obsmarkers-case-C2.t
171 test-exchange-obsmarkers-case-C3.t
172 test-exchange-obsmarkers-case-C3.t
172 test-exchange-obsmarkers-case-C4.t
173 test-exchange-obsmarkers-case-C4.t
173 test-exchange-obsmarkers-case-D1.t
174 test-exchange-obsmarkers-case-D1.t
174 test-exchange-obsmarkers-case-D2.t
175 test-exchange-obsmarkers-case-D2.t
175 test-exchange-obsmarkers-case-D3.t
176 test-exchange-obsmarkers-case-D3.t
176 test-exchange-obsmarkers-case-D4.t
177 test-exchange-obsmarkers-case-D4.t
177 test-execute-bit.t
178 test-execute-bit.t
178 test-export.t
179 test-export.t
179 test-extdata.t
180 test-extdata.t
180 test-extdiff.t
181 test-extdiff.t
181 test-extensions-afterloaded.t
182 test-extensions-afterloaded.t
182 test-extensions-wrapfunction.py
183 test-extensions-wrapfunction.py
183 test-extra-filelog-entry.t
184 test-extra-filelog-entry.t
184 test-fetch.t
185 test-fetch.t
185 test-filebranch.t
186 test-filebranch.t
186 test-filecache.py
187 test-filecache.py
187 test-filelog.py
188 test-filelog.py
188 test-fileset-generated.t
189 test-fileset-generated.t
189 test-fileset.t
190 test-fileset.t
190 test-fix-topology.t
191 test-fix-topology.t
191 test-flags.t
192 test-flags.t
192 test-generaldelta.t
193 test-generaldelta.t
193 test-getbundle.t
194 test-getbundle.t
194 test-git-export.t
195 test-git-export.t
195 test-glog-beautifygraph.t
196 test-glog-beautifygraph.t
196 test-glog-topological.t
197 test-glog-topological.t
197 test-glog.t
198 test-glog.t
198 test-gpg.t
199 test-gpg.t
199 test-graft.t
200 test-graft.t
200 test-grep.t
201 test-grep.t
201 test-hg-parseurl.py
202 test-hg-parseurl.py
202 test-hghave.t
203 test-hghave.t
203 test-hgignore.t
204 test-hgignore.t
204 test-hgk.t
205 test-hgk.t
205 test-hgrc.t
206 test-hgrc.t
206 test-hgweb-annotate-whitespace.t
207 test-hgweb-annotate-whitespace.t
207 test-hgweb-bundle.t
208 test-hgweb-bundle.t
208 test-hgweb-csp.t
209 test-hgweb-csp.t
209 test-hgweb-descend-empties.t
210 test-hgweb-descend-empties.t
210 test-hgweb-diffs.t
211 test-hgweb-diffs.t
211 test-hgweb-empty.t
212 test-hgweb-empty.t
212 test-hgweb-filelog.t
213 test-hgweb-filelog.t
213 test-hgweb-non-interactive.t
214 test-hgweb-non-interactive.t
214 test-hgweb-raw.t
215 test-hgweb-raw.t
215 test-hgweb-removed.t
216 test-hgweb-removed.t
216 test-hgweb.t
217 test-hgweb.t
217 test-hgwebdir-paths.py
218 test-hgwebdir-paths.py
218 test-hgwebdirsym.t
219 test-hgwebdirsym.t
219 test-histedit-arguments.t
220 test-histedit-arguments.t
220 test-histedit-base.t
221 test-histedit-base.t
221 test-histedit-bookmark-motion.t
222 test-histedit-bookmark-motion.t
222 test-histedit-commute.t
223 test-histedit-commute.t
223 test-histedit-drop.t
224 test-histedit-drop.t
224 test-histedit-edit.t
225 test-histedit-edit.t
225 test-histedit-fold-non-commute.t
226 test-histedit-fold-non-commute.t
226 test-histedit-fold.t
227 test-histedit-fold.t
227 test-histedit-no-backup.t
228 test-histedit-no-backup.t
228 test-histedit-no-change.t
229 test-histedit-no-change.t
229 test-histedit-non-commute-abort.t
230 test-histedit-non-commute-abort.t
230 test-histedit-non-commute.t
231 test-histedit-non-commute.t
231 test-histedit-obsolete.t
232 test-histedit-obsolete.t
232 test-histedit-outgoing.t
233 test-histedit-outgoing.t
233 test-histedit-templates.t
234 test-histedit-templates.t
234 test-http-branchmap.t
235 test-http-branchmap.t
235 test-http-bundle1.t
236 test-http-bundle1.t
236 test-http-clone-r.t
237 test-http-clone-r.t
237 test-http-permissions.t
238 test-http-permissions.t
238 test-http.t
239 test-http.t
239 test-hybridencode.py
240 test-hybridencode.py
240 test-i18n.t
241 test-i18n.t
241 test-identify.t
242 test-identify.t
242 test-impexp-branch.t
243 test-impexp-branch.t
243 test-import-bypass.t
244 test-import-bypass.t
244 test-import-eol.t
245 test-import-eol.t
245 test-import-merge.t
246 test-import-merge.t
246 test-import-unknown.t
247 test-import-unknown.t
247 test-import.t
248 test-import.t
248 test-imports-checker.t
249 test-imports-checker.t
249 test-incoming-outgoing.t
250 test-incoming-outgoing.t
250 test-inherit-mode.t
251 test-inherit-mode.t
251 test-init.t
252 test-init.t
252 test-issue1089.t
253 test-issue1089.t
253 test-issue1102.t
254 test-issue1102.t
254 test-issue1175.t
255 test-issue1175.t
255 test-issue1306.t
256 test-issue1306.t
256 test-issue1438.t
257 test-issue1438.t
257 test-issue1502.t
258 test-issue1502.t
258 test-issue1802.t
259 test-issue1802.t
259 test-issue1877.t
260 test-issue1877.t
260 test-issue1993.t
261 test-issue1993.t
261 test-issue2137.t
262 test-issue2137.t
262 test-issue3084.t
263 test-issue3084.t
263 test-issue4074.t
264 test-issue4074.t
264 test-issue522.t
265 test-issue522.t
265 test-issue586.t
266 test-issue586.t
266 test-issue5979.t
267 test-issue5979.t
267 test-issue612.t
268 test-issue612.t
268 test-issue619.t
269 test-issue619.t
269 test-issue660.t
270 test-issue660.t
270 test-issue672.t
271 test-issue672.t
271 test-issue842.t
272 test-issue842.t
272 test-journal-exists.t
273 test-journal-exists.t
273 test-journal-share.t
274 test-journal-share.t
274 test-journal.t
275 test-journal.t
275 test-known.t
276 test-known.t
276 test-largefiles-cache.t
277 test-largefiles-cache.t
277 test-largefiles-misc.t
278 test-largefiles-misc.t
278 test-largefiles-small-disk.t
279 test-largefiles-small-disk.t
279 test-largefiles-update.t
280 test-largefiles-update.t
280 test-largefiles.t
281 test-largefiles.t
281 test-lfs-largefiles.t
282 test-lfs-largefiles.t
282 test-lfs-pointer.py
283 test-lfs-pointer.py
283 test-linelog.py
284 test-linelog.py
284 test-linerange.py
285 test-linerange.py
285 test-locate.t
286 test-locate.t
286 test-lock-badness.t
287 test-lock-badness.t
287 test-log-linerange.t
288 test-log-linerange.t
288 test-log.t
289 test-log.t
289 test-logexchange.t
290 test-logexchange.t
290 test-lrucachedict.py
291 test-lrucachedict.py
291 test-mactext.t
292 test-mactext.t
292 test-mailmap.t
293 test-mailmap.t
293 test-manifest-merging.t
294 test-manifest-merging.t
294 test-manifest.py
295 test-manifest.py
295 test-manifest.t
296 test-manifest.t
296 test-match.py
297 test-match.py
297 test-mdiff.py
298 test-mdiff.py
298 test-merge-changedelete.t
299 test-merge-changedelete.t
299 test-merge-closedheads.t
300 test-merge-closedheads.t
300 test-merge-commit.t
301 test-merge-commit.t
301 test-merge-criss-cross.t
302 test-merge-criss-cross.t
302 test-merge-default.t
303 test-merge-default.t
303 test-merge-force.t
304 test-merge-force.t
304 test-merge-halt.t
305 test-merge-halt.t
305 test-merge-internal-tools-pattern.t
306 test-merge-internal-tools-pattern.t
306 test-merge-local.t
307 test-merge-local.t
307 test-merge-no-file-change.t
308 test-merge-no-file-change.t
308 test-merge-remove.t
309 test-merge-remove.t
309 test-merge-revert.t
310 test-merge-revert.t
310 test-merge-revert2.t
311 test-merge-revert2.t
311 test-merge-subrepos.t
312 test-merge-subrepos.t
312 test-merge-symlinks.t
313 test-merge-symlinks.t
313 test-merge-tools.t
314 test-merge-tools.t
314 test-merge-types.t
315 test-merge-types.t
315 test-merge1.t
316 test-merge1.t
316 test-merge10.t
317 test-merge10.t
317 test-merge2.t
318 test-merge2.t
318 test-merge4.t
319 test-merge4.t
319 test-merge5.t
320 test-merge5.t
320 test-merge6.t
321 test-merge6.t
321 test-merge7.t
322 test-merge7.t
322 test-merge8.t
323 test-merge8.t
323 test-merge9.t
324 test-merge9.t
324 test-minifileset.py
325 test-minifileset.py
325 test-minirst.py
326 test-minirst.py
326 test-mq-git.t
327 test-mq-git.t
327 test-mq-guards.t
328 test-mq-guards.t
328 test-mq-header-date.t
329 test-mq-header-date.t
329 test-mq-header-from.t
330 test-mq-header-from.t
330 test-mq-merge.t
331 test-mq-merge.t
331 test-mq-pull-from-bundle.t
332 test-mq-pull-from-bundle.t
332 test-mq-qclone-http.t
333 test-mq-qclone-http.t
333 test-mq-qdelete.t
334 test-mq-qdelete.t
334 test-mq-qdiff.t
335 test-mq-qdiff.t
335 test-mq-qfold.t
336 test-mq-qfold.t
336 test-mq-qgoto.t
337 test-mq-qgoto.t
337 test-mq-qimport-fail-cleanup.t
338 test-mq-qimport-fail-cleanup.t
338 test-mq-qnew.t
339 test-mq-qnew.t
339 test-mq-qpush-exact.t
340 test-mq-qpush-exact.t
340 test-mq-qpush-fail.t
341 test-mq-qpush-fail.t
341 test-mq-qqueue.t
342 test-mq-qqueue.t
342 test-mq-qrefresh-interactive.t
343 test-mq-qrefresh-interactive.t
343 test-mq-qrefresh-replace-log-message.t
344 test-mq-qrefresh-replace-log-message.t
344 test-mq-qrefresh.t
345 test-mq-qrefresh.t
345 test-mq-qrename.t
346 test-mq-qrename.t
346 test-mq-qsave.t
347 test-mq-qsave.t
347 test-mq-safety.t
348 test-mq-safety.t
348 test-mq-subrepo.t
349 test-mq-subrepo.t
349 test-mq-symlinks.t
350 test-mq-symlinks.t
350 test-mq.t
351 test-mq.t
351 test-mv-cp-st-diff.t
352 test-mv-cp-st-diff.t
352 test-narrow-acl.t
353 test-narrow-acl.t
353 test-narrow-archive.t
354 test-narrow-archive.t
354 test-narrow-clone-no-ellipsis.t
355 test-narrow-clone-no-ellipsis.t
355 test-narrow-clone-non-narrow-server.t
356 test-narrow-clone-non-narrow-server.t
356 test-narrow-clone-nonlinear.t
357 test-narrow-clone-nonlinear.t
357 test-narrow-clone.t
358 test-narrow-clone.t
358 test-narrow-commit.t
359 test-narrow-commit.t
359 test-narrow-copies.t
360 test-narrow-copies.t
360 test-narrow-debugcommands.t
361 test-narrow-debugcommands.t
361 test-narrow-debugrebuilddirstate.t
362 test-narrow-debugrebuilddirstate.t
362 test-narrow-exchange-merges.t
363 test-narrow-exchange-merges.t
363 test-narrow-exchange.t
364 test-narrow-exchange.t
364 test-narrow-expanddirstate.t
365 test-narrow-expanddirstate.t
365 test-narrow-merge.t
366 test-narrow-merge.t
366 test-narrow-patch.t
367 test-narrow-patch.t
367 test-narrow-patterns.t
368 test-narrow-patterns.t
368 test-narrow-pull.t
369 test-narrow-pull.t
369 test-narrow-rebase.t
370 test-narrow-rebase.t
370 test-narrow-shallow-merges.t
371 test-narrow-shallow-merges.t
371 test-narrow-shallow.t
372 test-narrow-shallow.t
372 test-narrow-strip.t
373 test-narrow-strip.t
373 test-narrow-trackedcmd.t
374 test-narrow-trackedcmd.t
374 test-narrow-update.t
375 test-narrow-update.t
375 test-narrow-widen-no-ellipsis.t
376 test-narrow-widen-no-ellipsis.t
376 test-narrow-widen.t
377 test-narrow-widen.t
377 test-narrow.t
378 test-narrow.t
378 test-nested-repo.t
379 test-nested-repo.t
379 test-newbranch.t
380 test-newbranch.t
380 test-newercgi.t
381 test-newercgi.t
381 test-nointerrupt.t
382 test-nointerrupt.t
382 test-obshistory.t
383 test-obshistory.t
383 test-obsmarker-template.t
384 test-obsmarker-template.t
384 test-obsmarkers-effectflag.t
385 test-obsmarkers-effectflag.t
385 test-obsolete-bounds-checking.t
386 test-obsolete-bounds-checking.t
386 test-obsolete-bundle-strip.t
387 test-obsolete-bundle-strip.t
387 test-obsolete-changeset-exchange.t
388 test-obsolete-changeset-exchange.t
388 test-obsolete-checkheads.t
389 test-obsolete-checkheads.t
389 test-obsolete-distributed.t
390 test-obsolete-distributed.t
390 test-obsolete-divergent.t
391 test-obsolete-divergent.t
391 test-obsolete-tag-cache.t
392 test-obsolete-tag-cache.t
392 test-obsolete.t
393 test-obsolete.t
393 test-pager.t
394 test-pager.t
394 test-parents.t
395 test-parents.t
395 test-parseindex2.py
396 test-parseindex2.py
396 test-patch-offset.t
397 test-patch-offset.t
397 test-patch.t
398 test-patch.t
398 test-patchbomb-bookmark.t
399 test-patchbomb-bookmark.t
399 test-patchbomb-tls.t
400 test-patchbomb-tls.t
400 test-patchbomb.t
401 test-patchbomb.t
401 test-pathconflicts-merge.t
402 test-pathconflicts-merge.t
402 test-pathconflicts-update.t
403 test-pathconflicts-update.t
403 test-pathencode.py
404 test-pathencode.py
404 test-pending.t
405 test-pending.t
405 test-permissions.t
406 test-permissions.t
406 test-phases-exchange.t
407 test-phases-exchange.t
407 test-phases.t
408 test-phases.t
408 test-pull-branch.t
409 test-pull-branch.t
409 test-pull-http.t
410 test-pull-http.t
410 test-pull-permission.t
411 test-pull-permission.t
411 test-pull-pull-corruption.t
412 test-pull-pull-corruption.t
412 test-pull-r.t
413 test-pull-r.t
413 test-pull-update.t
414 test-pull-update.t
414 test-pull.t
415 test-pull.t
415 test-purge.t
416 test-purge.t
416 test-push-cgi.t
417 test-push-cgi.t
417 test-push-checkheads-partial-C1.t
418 test-push-checkheads-partial-C1.t
418 test-push-checkheads-partial-C2.t
419 test-push-checkheads-partial-C2.t
419 test-push-checkheads-partial-C3.t
420 test-push-checkheads-partial-C3.t
420 test-push-checkheads-partial-C4.t
421 test-push-checkheads-partial-C4.t
421 test-push-checkheads-pruned-B1.t
422 test-push-checkheads-pruned-B1.t
422 test-push-checkheads-pruned-B2.t
423 test-push-checkheads-pruned-B2.t
423 test-push-checkheads-pruned-B3.t
424 test-push-checkheads-pruned-B3.t
424 test-push-checkheads-pruned-B4.t
425 test-push-checkheads-pruned-B4.t
425 test-push-checkheads-pruned-B5.t
426 test-push-checkheads-pruned-B5.t
426 test-push-checkheads-pruned-B6.t
427 test-push-checkheads-pruned-B6.t
427 test-push-checkheads-pruned-B7.t
428 test-push-checkheads-pruned-B7.t
428 test-push-checkheads-pruned-B8.t
429 test-push-checkheads-pruned-B8.t
429 test-push-checkheads-superceed-A1.t
430 test-push-checkheads-superceed-A1.t
430 test-push-checkheads-superceed-A2.t
431 test-push-checkheads-superceed-A2.t
431 test-push-checkheads-superceed-A3.t
432 test-push-checkheads-superceed-A3.t
432 test-push-checkheads-superceed-A4.t
433 test-push-checkheads-superceed-A4.t
433 test-push-checkheads-superceed-A5.t
434 test-push-checkheads-superceed-A5.t
434 test-push-checkheads-superceed-A6.t
435 test-push-checkheads-superceed-A6.t
435 test-push-checkheads-superceed-A7.t
436 test-push-checkheads-superceed-A7.t
436 test-push-checkheads-superceed-A8.t
437 test-push-checkheads-superceed-A8.t
437 test-push-checkheads-unpushed-D1.t
438 test-push-checkheads-unpushed-D1.t
438 test-push-checkheads-unpushed-D2.t
439 test-push-checkheads-unpushed-D2.t
439 test-push-checkheads-unpushed-D3.t
440 test-push-checkheads-unpushed-D3.t
440 test-push-checkheads-unpushed-D4.t
441 test-push-checkheads-unpushed-D4.t
441 test-push-checkheads-unpushed-D5.t
442 test-push-checkheads-unpushed-D5.t
442 test-push-checkheads-unpushed-D6.t
443 test-push-checkheads-unpushed-D6.t
443 test-push-checkheads-unpushed-D7.t
444 test-push-checkheads-unpushed-D7.t
444 test-push-http.t
445 test-push-http.t
445 test-push-warn.t
446 test-push-warn.t
446 test-push.t
447 test-push.t
447 test-pushvars.t
448 test-pushvars.t
448 test-qrecord.t
449 test-qrecord.t
449 test-rebase-abort.t
450 test-rebase-abort.t
450 test-rebase-backup.t
451 test-rebase-backup.t
451 test-rebase-base-flag.t
452 test-rebase-base-flag.t
452 test-rebase-bookmarks.t
453 test-rebase-bookmarks.t
453 test-rebase-brute-force.t
454 test-rebase-brute-force.t
454 test-rebase-cache.t
455 test-rebase-cache.t
455 test-rebase-check-restore.t
456 test-rebase-check-restore.t
456 test-rebase-collapse.t
457 test-rebase-collapse.t
457 test-rebase-conflicts.t
458 test-rebase-conflicts.t
458 test-rebase-dest.t
459 test-rebase-dest.t
459 test-rebase-detach.t
460 test-rebase-detach.t
460 test-rebase-emptycommit.t
461 test-rebase-emptycommit.t
461 test-rebase-inmemory.t
462 test-rebase-inmemory.t
462 test-rebase-interruptions.t
463 test-rebase-interruptions.t
463 test-rebase-issue-noparam-single-rev.t
464 test-rebase-issue-noparam-single-rev.t
464 test-rebase-legacy.t
465 test-rebase-legacy.t
465 test-rebase-mq-skip.t
466 test-rebase-mq-skip.t
466 test-rebase-mq.t
467 test-rebase-mq.t
467 test-rebase-named-branches.t
468 test-rebase-named-branches.t
468 test-rebase-newancestor.t
469 test-rebase-newancestor.t
469 test-rebase-obsolete.t
470 test-rebase-obsolete.t
470 test-rebase-parameters.t
471 test-rebase-parameters.t
471 test-rebase-partial.t
472 test-rebase-partial.t
472 test-rebase-pull.t
473 test-rebase-pull.t
473 test-rebase-rename.t
474 test-rebase-rename.t
474 test-rebase-scenario-global.t
475 test-rebase-scenario-global.t
475 test-rebase-templates.t
476 test-rebase-templates.t
476 test-rebase-transaction.t
477 test-rebase-transaction.t
477 test-rebuildstate.t
478 test-rebuildstate.t
478 test-record.t
479 test-record.t
479 test-relink.t
480 test-relink.t
480 test-remove.t
481 test-remove.t
481 test-removeemptydirs.t
482 test-removeemptydirs.t
482 test-rename-after-merge.t
483 test-rename-after-merge.t
483 test-rename-dir-merge.t
484 test-rename-dir-merge.t
484 test-rename-merge1.t
485 test-rename-merge1.t
485 test-rename-merge2.t
486 test-rename-merge2.t
486 test-rename.t
487 test-rename.t
487 test-repair-strip.t
488 test-repair-strip.t
488 test-repo-compengines.t
489 test-repo-compengines.t
489 test-resolve.t
490 test-resolve.t
490 test-revert-flags.t
491 test-revert-flags.t
491 test-revert-interactive.t
492 test-revert-interactive.t
492 test-revert-unknown.t
493 test-revert-unknown.t
493 test-revert.t
494 test-revert.t
494 test-revisions.t
495 test-revisions.t
495 test-revlog-ancestry.py
496 test-revlog-ancestry.py
496 test-revlog-group-emptyiter.t
497 test-revlog-group-emptyiter.t
497 test-revlog-mmapindex.t
498 test-revlog-mmapindex.t
498 test-revlog-packentry.t
499 test-revlog-packentry.t
499 test-revlog-raw.py
500 test-revlog-raw.py
500 test-revlog-v2.t
501 test-revlog-v2.t
501 test-revset-dirstate-parents.t
502 test-revset-dirstate-parents.t
502 test-revset-legacy-lookup.t
503 test-revset-legacy-lookup.t
503 test-revset-outgoing.t
504 test-revset-outgoing.t
504 test-rollback.t
505 test-rollback.t
505 test-run-tests.py
506 test-run-tests.py
506 test-run-tests.t
507 test-run-tests.t
507 test-schemes.t
508 test-schemes.t
508 test-serve.t
509 test-serve.t
509 test-setdiscovery.t
510 test-setdiscovery.t
510 test-share.t
511 test-share.t
511 test-shelve.t
512 test-shelve.t
512 test-show-stack.t
513 test-show-stack.t
513 test-show-work.t
514 test-show-work.t
514 test-show.t
515 test-show.t
515 test-simple-update.t
516 test-simple-update.t
516 test-simplekeyvaluefile.py
517 test-simplekeyvaluefile.py
517 test-simplemerge.py
518 test-simplemerge.py
518 test-single-head.t
519 test-single-head.t
519 test-sparse-clear.t
520 test-sparse-clear.t
520 test-sparse-clone.t
521 test-sparse-clone.t
521 test-sparse-import.t
522 test-sparse-import.t
522 test-sparse-merges.t
523 test-sparse-merges.t
523 test-sparse-profiles.t
524 test-sparse-profiles.t
524 test-sparse-requirement.t
525 test-sparse-requirement.t
525 test-sparse-verbose-json.t
526 test-sparse-verbose-json.t
526 test-sparse.t
527 test-sparse.t
527 test-split.t
528 test-split.t
528 test-ssh-bundle1.t
529 test-ssh-bundle1.t
529 test-ssh-clone-r.t
530 test-ssh-clone-r.t
530 test-ssh-proto-unbundle.t
531 test-ssh-proto-unbundle.t
531 test-ssh-proto.t
532 test-ssh-proto.t
532 test-ssh.t
533 test-ssh.t
533 test-sshserver.py
534 test-sshserver.py
534 test-stack.t
535 test-stack.t
535 test-status-inprocess.py
536 test-status-inprocess.py
536 test-status-rev.t
537 test-status-rev.t
537 test-status-terse.t
538 test-status-terse.t
538 test-storage.py
539 test-storage.py
539 test-stream-bundle-v2.t
540 test-stream-bundle-v2.t
540 test-strict.t
541 test-strict.t
541 test-strip-cross.t
542 test-strip-cross.t
542 test-strip.t
543 test-strip.t
543 test-subrepo-deep-nested-change.t
544 test-subrepo-deep-nested-change.t
544 test-subrepo-missing.t
545 test-subrepo-missing.t
545 test-subrepo-paths.t
546 test-subrepo-paths.t
546 test-subrepo-recursion.t
547 test-subrepo-recursion.t
547 test-subrepo-relative-path.t
548 test-subrepo-relative-path.t
548 test-subrepo.t
549 test-subrepo.t
549 test-symlink-os-yes-fs-no.py
550 test-symlink-os-yes-fs-no.py
550 test-symlink-placeholder.t
551 test-symlink-placeholder.t
551 test-symlinks.t
552 test-symlinks.t
552 test-tag.t
553 test-tag.t
553 test-tags.t
554 test-tags.t
554 test-template-basic.t
555 test-template-basic.t
555 test-template-functions.t
556 test-template-functions.t
556 test-template-keywords.t
557 test-template-keywords.t
557 test-template-map.t
558 test-template-map.t
558 test-transplant.t
559 test-transplant.t
559 test-treemanifest.t
560 test-treemanifest.t
560 test-ui-color.py
561 test-ui-color.py
561 test-ui-config.py
562 test-ui-config.py
562 test-ui-verbosity.py
563 test-ui-verbosity.py
563 test-unamend.t
564 test-unamend.t
564 test-unbundlehash.t
565 test-unbundlehash.t
565 test-uncommit.t
566 test-uncommit.t
566 test-unified-test.t
567 test-unified-test.t
567 test-unionrepo.t
568 test-unionrepo.t
568 test-unrelated-pull.t
569 test-unrelated-pull.t
569 test-up-local-change.t
570 test-up-local-change.t
570 test-update-branches.t
571 test-update-branches.t
571 test-update-dest.t
572 test-update-dest.t
572 test-update-issue1456.t
573 test-update-issue1456.t
573 test-update-names.t
574 test-update-names.t
574 test-update-reverse.t
575 test-update-reverse.t
575 test-upgrade-repo.t
576 test-upgrade-repo.t
576 test-url-download.t
577 test-url-download.t
577 test-url-rev.t
578 test-url-rev.t
578 test-url.py
579 test-url.py
579 test-username-newline.t
580 test-username-newline.t
580 test-util.py
581 test-util.py
581 test-verify.t
582 test-verify.t
582 test-walk.t
583 test-walk.t
583 test-walkrepo.py
584 test-walkrepo.py
584 test-websub.t
585 test-websub.t
585 test-win32text.t
586 test-win32text.t
586 test-wireproto-clientreactor.py
587 test-wireproto-clientreactor.py
587 test-wireproto-command-branchmap.t
588 test-wireproto-command-branchmap.t
588 test-wireproto-command-changesetdata.t
589 test-wireproto-command-changesetdata.t
589 test-wireproto-command-filedata.t
590 test-wireproto-command-filedata.t
590 test-wireproto-command-filesdata.t
591 test-wireproto-command-filesdata.t
591 test-wireproto-command-heads.t
592 test-wireproto-command-heads.t
592 test-wireproto-command-listkeys.t
593 test-wireproto-command-listkeys.t
593 test-wireproto-command-lookup.t
594 test-wireproto-command-lookup.t
594 test-wireproto-command-manifestdata.t
595 test-wireproto-command-manifestdata.t
595 test-wireproto-command-pushkey.t
596 test-wireproto-command-pushkey.t
596 test-wireproto-framing.py
597 test-wireproto-framing.py
597 test-wireproto-serverreactor.py
598 test-wireproto-serverreactor.py
598 test-wireproto.py
599 test-wireproto.py
599 test-wsgirequest.py
600 test-wsgirequest.py
600 test-xdg.t
601 test-xdg.t
@@ -1,1296 +1,1296 b''
1 #testcases sshv1 sshv2
1 #testcases sshv1 sshv2
2
2
3 #if sshv2
3 #if sshv2
4 $ cat >> $HGRCPATH << EOF
4 $ cat >> $HGRCPATH << EOF
5 > [experimental]
5 > [experimental]
6 > sshpeer.advertise-v2 = true
6 > sshpeer.advertise-v2 = true
7 > sshserver.support-v2 = true
7 > sshserver.support-v2 = true
8 > EOF
8 > EOF
9 #endif
9 #endif
10
10
11 Prepare repo a:
11 Prepare repo a:
12
12
13 $ hg init a
13 $ hg init a
14 $ cd a
14 $ cd a
15 $ echo a > a
15 $ echo a > a
16 $ hg add a
16 $ hg add a
17 $ hg commit -m test
17 $ hg commit -m test
18 $ echo first line > b
18 $ echo first line > b
19 $ hg add b
19 $ hg add b
20
20
21 Create a non-inlined filelog:
21 Create a non-inlined filelog:
22
22
23 $ "$PYTHON" -c 'open("data1", "wb").write(b"".join(b"%d\n" % x for x in range(10000)))'
23 $ "$PYTHON" -c 'open("data1", "wb").write(b"".join(b"%d\n" % x for x in range(10000)))'
24 $ for j in 0 1 2 3 4 5 6 7 8 9; do
24 $ for j in 0 1 2 3 4 5 6 7 8 9; do
25 > cat data1 >> b
25 > cat data1 >> b
26 > hg commit -m test
26 > hg commit -m test
27 > done
27 > done
28
28
29 List files in store/data (should show a 'b.d'):
29 List files in store/data (should show a 'b.d'):
30
30
31 #if reporevlogstore
31 #if reporevlogstore
32 $ for i in .hg/store/data/*; do
32 $ for i in .hg/store/data/*; do
33 > echo $i
33 > echo $i
34 > done
34 > done
35 .hg/store/data/a.i
35 .hg/store/data/a.i
36 .hg/store/data/b.d
36 .hg/store/data/b.d
37 .hg/store/data/b.i
37 .hg/store/data/b.i
38 #endif
38 #endif
39
39
40 Trigger branchcache creation:
40 Trigger branchcache creation:
41
41
42 $ hg branches
42 $ hg branches
43 default 10:a7949464abda
43 default 10:a7949464abda
44 $ ls .hg/cache
44 $ ls .hg/cache
45 branch2-served
45 branch2-served
46 checkisexec (execbit !)
46 checkisexec (execbit !)
47 checklink (symlink !)
47 checklink (symlink !)
48 checklink-target (symlink !)
48 checklink-target (symlink !)
49 checknoexec (execbit !)
49 checknoexec (execbit !)
50 manifestfulltextcache (reporevlogstore !)
50 manifestfulltextcache (reporevlogstore !)
51 rbc-names-v1
51 rbc-names-v1
52 rbc-revs-v1
52 rbc-revs-v1
53
53
54 Default operation:
54 Default operation:
55
55
56 $ hg clone . ../b
56 $ hg clone . ../b
57 updating to branch default
57 updating to branch default
58 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
58 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
59 $ cd ../b
59 $ cd ../b
60
60
61 Ensure branchcache got copied over:
61 Ensure branchcache got copied over:
62
62
63 $ ls .hg/cache
63 $ ls .hg/cache
64 branch2-served
64 branch2-served
65 checkisexec (execbit !)
65 checkisexec (execbit !)
66 checklink (symlink !)
66 checklink (symlink !)
67 checklink-target (symlink !)
67 checklink-target (symlink !)
68 rbc-names-v1
68 rbc-names-v1
69 rbc-revs-v1
69 rbc-revs-v1
70
70
71 $ cat a
71 $ cat a
72 a
72 a
73 $ hg verify
73 $ hg verify
74 checking changesets
74 checking changesets
75 checking manifests
75 checking manifests
76 crosschecking files in changesets and manifests
76 crosschecking files in changesets and manifests
77 checking files
77 checking files
78 checked 11 changesets with 11 changes to 2 files
78 checked 11 changesets with 11 changes to 2 files
79
79
80 Invalid dest '' must abort:
80 Invalid dest '' must abort:
81
81
82 $ hg clone . ''
82 $ hg clone . ''
83 abort: empty destination path is not valid
83 abort: empty destination path is not valid
84 [255]
84 [255]
85
85
86 No update, with debug option:
86 No update, with debug option:
87
87
88 #if hardlink
88 #if hardlink
89 $ hg --debug clone -U . ../c --config progress.debug=true
89 $ hg --debug clone -U . ../c --config progress.debug=true
90 linking: 1
90 linking: 1
91 linking: 2
91 linking: 2
92 linking: 3
92 linking: 3
93 linking: 4
93 linking: 4
94 linking: 5
94 linking: 5
95 linking: 6
95 linking: 6
96 linking: 7
96 linking: 7
97 linking: 8
97 linking: 8
98 linked 8 files (reporevlogstore !)
98 linked 8 files (reporevlogstore !)
99 linking: 9 (reposimplestore !)
99 linking: 9 (reposimplestore !)
100 linking: 10 (reposimplestore !)
100 linking: 10 (reposimplestore !)
101 linking: 11 (reposimplestore !)
101 linking: 11 (reposimplestore !)
102 linking: 12 (reposimplestore !)
102 linking: 12 (reposimplestore !)
103 linking: 13 (reposimplestore !)
103 linking: 13 (reposimplestore !)
104 linking: 14 (reposimplestore !)
104 linking: 14 (reposimplestore !)
105 linking: 15 (reposimplestore !)
105 linking: 15 (reposimplestore !)
106 linking: 16 (reposimplestore !)
106 linking: 16 (reposimplestore !)
107 linking: 17 (reposimplestore !)
107 linking: 17 (reposimplestore !)
108 linking: 18 (reposimplestore !)
108 linking: 18 (reposimplestore !)
109 linked 18 files (reposimplestore !)
109 linked 18 files (reposimplestore !)
110 #else
110 #else
111 $ hg --debug clone -U . ../c --config progress.debug=true
111 $ hg --debug clone -U . ../c --config progress.debug=true
112 linking: 1
112 linking: 1
113 copying: 2
113 copying: 2
114 copying: 3
114 copying: 3
115 copying: 4
115 copying: 4
116 copying: 5
116 copying: 5
117 copying: 6
117 copying: 6
118 copying: 7
118 copying: 7
119 copying: 8
119 copying: 8
120 copied 8 files (reporevlogstore !)
120 copied 8 files (reporevlogstore !)
121 copying: 9 (reposimplestore !)
121 copying: 9 (reposimplestore !)
122 copying: 10 (reposimplestore !)
122 copying: 10 (reposimplestore !)
123 copying: 11 (reposimplestore !)
123 copying: 11 (reposimplestore !)
124 copying: 12 (reposimplestore !)
124 copying: 12 (reposimplestore !)
125 copying: 13 (reposimplestore !)
125 copying: 13 (reposimplestore !)
126 copying: 14 (reposimplestore !)
126 copying: 14 (reposimplestore !)
127 copying: 15 (reposimplestore !)
127 copying: 15 (reposimplestore !)
128 copying: 16 (reposimplestore !)
128 copying: 16 (reposimplestore !)
129 copying: 17 (reposimplestore !)
129 copying: 17 (reposimplestore !)
130 copying: 18 (reposimplestore !)
130 copying: 18 (reposimplestore !)
131 copied 18 files (reposimplestore !)
131 copied 18 files (reposimplestore !)
132 #endif
132 #endif
133 $ cd ../c
133 $ cd ../c
134
134
135 Ensure branchcache got copied over:
135 Ensure branchcache got copied over:
136
136
137 $ ls .hg/cache
137 $ ls .hg/cache
138 branch2-served
138 branch2-served
139 rbc-names-v1
139 rbc-names-v1
140 rbc-revs-v1
140 rbc-revs-v1
141
141
142 $ cat a 2>/dev/null || echo "a not present"
142 $ cat a 2>/dev/null || echo "a not present"
143 a not present
143 a not present
144 $ hg verify
144 $ hg verify
145 checking changesets
145 checking changesets
146 checking manifests
146 checking manifests
147 crosschecking files in changesets and manifests
147 crosschecking files in changesets and manifests
148 checking files
148 checking files
149 checked 11 changesets with 11 changes to 2 files
149 checked 11 changesets with 11 changes to 2 files
150
150
151 Default destination:
151 Default destination:
152
152
153 $ mkdir ../d
153 $ mkdir ../d
154 $ cd ../d
154 $ cd ../d
155 $ hg clone ../a
155 $ hg clone ../a
156 destination directory: a
156 destination directory: a
157 updating to branch default
157 updating to branch default
158 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
158 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
159 $ cd a
159 $ cd a
160 $ hg cat a
160 $ hg cat a
161 a
161 a
162 $ cd ../..
162 $ cd ../..
163
163
164 Check that we drop the 'file:' from the path before writing the .hgrc:
164 Check that we drop the 'file:' from the path before writing the .hgrc:
165
165
166 $ hg clone file:a e
166 $ hg clone file:a e
167 updating to branch default
167 updating to branch default
168 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
168 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
169 $ grep 'file:' e/.hg/hgrc
169 $ grep 'file:' e/.hg/hgrc
170 [1]
170 [1]
171
171
172 Check that path aliases are expanded:
172 Check that path aliases are expanded:
173
173
174 $ hg clone -q -U --config 'paths.foobar=a#0' foobar f
174 $ hg clone -q -U --config 'paths.foobar=a#0' foobar f
175 $ hg -R f showconfig paths.default
175 $ hg -R f showconfig paths.default
176 $TESTTMP/a#0
176 $TESTTMP/a#0
177
177
178 Use --pull:
178 Use --pull:
179
179
180 $ hg clone --pull a g
180 $ hg clone --pull a g
181 requesting all changes
181 requesting all changes
182 adding changesets
182 adding changesets
183 adding manifests
183 adding manifests
184 adding file changes
184 adding file changes
185 added 11 changesets with 11 changes to 2 files
185 added 11 changesets with 11 changes to 2 files
186 new changesets acb14030fe0a:a7949464abda
186 new changesets acb14030fe0a:a7949464abda
187 updating to branch default
187 updating to branch default
188 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
188 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
189 $ hg -R g verify
189 $ hg -R g verify
190 checking changesets
190 checking changesets
191 checking manifests
191 checking manifests
192 crosschecking files in changesets and manifests
192 crosschecking files in changesets and manifests
193 checking files
193 checking files
194 checked 11 changesets with 11 changes to 2 files
194 checked 11 changesets with 11 changes to 2 files
195
195
196 Invalid dest '' with --pull must abort (issue2528):
196 Invalid dest '' with --pull must abort (issue2528):
197
197
198 $ hg clone --pull a ''
198 $ hg clone --pull a ''
199 abort: empty destination path is not valid
199 abort: empty destination path is not valid
200 [255]
200 [255]
201
201
202 Clone to '.':
202 Clone to '.':
203
203
204 $ mkdir h
204 $ mkdir h
205 $ cd h
205 $ cd h
206 $ hg clone ../a .
206 $ hg clone ../a .
207 updating to branch default
207 updating to branch default
208 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
208 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
209 $ cd ..
209 $ cd ..
210
210
211
211
212 *** Tests for option -u ***
212 *** Tests for option -u ***
213
213
214 Adding some more history to repo a:
214 Adding some more history to repo a:
215
215
216 $ cd a
216 $ cd a
217 $ hg tag ref1
217 $ hg tag ref1
218 $ echo the quick brown fox >a
218 $ echo the quick brown fox >a
219 $ hg ci -m "hacked default"
219 $ hg ci -m "hacked default"
220 $ hg up ref1
220 $ hg up ref1
221 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
221 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
222 $ hg branch stable
222 $ hg branch stable
223 marked working directory as branch stable
223 marked working directory as branch stable
224 (branches are permanent and global, did you want a bookmark?)
224 (branches are permanent and global, did you want a bookmark?)
225 $ echo some text >a
225 $ echo some text >a
226 $ hg ci -m "starting branch stable"
226 $ hg ci -m "starting branch stable"
227 $ hg tag ref2
227 $ hg tag ref2
228 $ echo some more text >a
228 $ echo some more text >a
229 $ hg ci -m "another change for branch stable"
229 $ hg ci -m "another change for branch stable"
230 $ hg up ref2
230 $ hg up ref2
231 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
231 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
232 $ hg parents
232 $ hg parents
233 changeset: 13:e8ece76546a6
233 changeset: 13:e8ece76546a6
234 branch: stable
234 branch: stable
235 tag: ref2
235 tag: ref2
236 parent: 10:a7949464abda
236 parent: 10:a7949464abda
237 user: test
237 user: test
238 date: Thu Jan 01 00:00:00 1970 +0000
238 date: Thu Jan 01 00:00:00 1970 +0000
239 summary: starting branch stable
239 summary: starting branch stable
240
240
241
241
242 Repo a has two heads:
242 Repo a has two heads:
243
243
244 $ hg heads
244 $ hg heads
245 changeset: 15:0aae7cf88f0d
245 changeset: 15:0aae7cf88f0d
246 branch: stable
246 branch: stable
247 tag: tip
247 tag: tip
248 user: test
248 user: test
249 date: Thu Jan 01 00:00:00 1970 +0000
249 date: Thu Jan 01 00:00:00 1970 +0000
250 summary: another change for branch stable
250 summary: another change for branch stable
251
251
252 changeset: 12:f21241060d6a
252 changeset: 12:f21241060d6a
253 user: test
253 user: test
254 date: Thu Jan 01 00:00:00 1970 +0000
254 date: Thu Jan 01 00:00:00 1970 +0000
255 summary: hacked default
255 summary: hacked default
256
256
257
257
258 $ cd ..
258 $ cd ..
259
259
260
260
261 Testing --noupdate with --updaterev (must abort):
261 Testing --noupdate with --updaterev (must abort):
262
262
263 $ hg clone --noupdate --updaterev 1 a ua
263 $ hg clone --noupdate --updaterev 1 a ua
264 abort: cannot specify both --noupdate and --updaterev
264 abort: cannot specify both --noupdate and --updaterev
265 [255]
265 [255]
266
266
267
267
268 Testing clone -u:
268 Testing clone -u:
269
269
270 $ hg clone -u . a ua
270 $ hg clone -u . a ua
271 updating to branch stable
271 updating to branch stable
272 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
272 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
273
273
274 Repo ua has both heads:
274 Repo ua has both heads:
275
275
276 $ hg -R ua heads
276 $ hg -R ua heads
277 changeset: 15:0aae7cf88f0d
277 changeset: 15:0aae7cf88f0d
278 branch: stable
278 branch: stable
279 tag: tip
279 tag: tip
280 user: test
280 user: test
281 date: Thu Jan 01 00:00:00 1970 +0000
281 date: Thu Jan 01 00:00:00 1970 +0000
282 summary: another change for branch stable
282 summary: another change for branch stable
283
283
284 changeset: 12:f21241060d6a
284 changeset: 12:f21241060d6a
285 user: test
285 user: test
286 date: Thu Jan 01 00:00:00 1970 +0000
286 date: Thu Jan 01 00:00:00 1970 +0000
287 summary: hacked default
287 summary: hacked default
288
288
289
289
290 Same revision checked out in repo a and ua:
290 Same revision checked out in repo a and ua:
291
291
292 $ hg -R a parents --template "{node|short}\n"
292 $ hg -R a parents --template "{node|short}\n"
293 e8ece76546a6
293 e8ece76546a6
294 $ hg -R ua parents --template "{node|short}\n"
294 $ hg -R ua parents --template "{node|short}\n"
295 e8ece76546a6
295 e8ece76546a6
296
296
297 $ rm -r ua
297 $ rm -r ua
298
298
299
299
300 Testing clone --pull -u:
300 Testing clone --pull -u:
301
301
302 $ hg clone --pull -u . a ua
302 $ hg clone --pull -u . a ua
303 requesting all changes
303 requesting all changes
304 adding changesets
304 adding changesets
305 adding manifests
305 adding manifests
306 adding file changes
306 adding file changes
307 added 16 changesets with 16 changes to 3 files (+1 heads)
307 added 16 changesets with 16 changes to 3 files (+1 heads)
308 new changesets acb14030fe0a:0aae7cf88f0d
308 new changesets acb14030fe0a:0aae7cf88f0d
309 updating to branch stable
309 updating to branch stable
310 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
310 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
311
311
312 Repo ua has both heads:
312 Repo ua has both heads:
313
313
314 $ hg -R ua heads
314 $ hg -R ua heads
315 changeset: 15:0aae7cf88f0d
315 changeset: 15:0aae7cf88f0d
316 branch: stable
316 branch: stable
317 tag: tip
317 tag: tip
318 user: test
318 user: test
319 date: Thu Jan 01 00:00:00 1970 +0000
319 date: Thu Jan 01 00:00:00 1970 +0000
320 summary: another change for branch stable
320 summary: another change for branch stable
321
321
322 changeset: 12:f21241060d6a
322 changeset: 12:f21241060d6a
323 user: test
323 user: test
324 date: Thu Jan 01 00:00:00 1970 +0000
324 date: Thu Jan 01 00:00:00 1970 +0000
325 summary: hacked default
325 summary: hacked default
326
326
327
327
328 Same revision checked out in repo a and ua:
328 Same revision checked out in repo a and ua:
329
329
330 $ hg -R a parents --template "{node|short}\n"
330 $ hg -R a parents --template "{node|short}\n"
331 e8ece76546a6
331 e8ece76546a6
332 $ hg -R ua parents --template "{node|short}\n"
332 $ hg -R ua parents --template "{node|short}\n"
333 e8ece76546a6
333 e8ece76546a6
334
334
335 $ rm -r ua
335 $ rm -r ua
336
336
337
337
338 Testing clone -u <branch>:
338 Testing clone -u <branch>:
339
339
340 $ hg clone -u stable a ua
340 $ hg clone -u stable a ua
341 updating to branch stable
341 updating to branch stable
342 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
342 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
343
343
344 Repo ua has both heads:
344 Repo ua has both heads:
345
345
346 $ hg -R ua heads
346 $ hg -R ua heads
347 changeset: 15:0aae7cf88f0d
347 changeset: 15:0aae7cf88f0d
348 branch: stable
348 branch: stable
349 tag: tip
349 tag: tip
350 user: test
350 user: test
351 date: Thu Jan 01 00:00:00 1970 +0000
351 date: Thu Jan 01 00:00:00 1970 +0000
352 summary: another change for branch stable
352 summary: another change for branch stable
353
353
354 changeset: 12:f21241060d6a
354 changeset: 12:f21241060d6a
355 user: test
355 user: test
356 date: Thu Jan 01 00:00:00 1970 +0000
356 date: Thu Jan 01 00:00:00 1970 +0000
357 summary: hacked default
357 summary: hacked default
358
358
359
359
360 Branch 'stable' is checked out:
360 Branch 'stable' is checked out:
361
361
362 $ hg -R ua parents
362 $ hg -R ua parents
363 changeset: 15:0aae7cf88f0d
363 changeset: 15:0aae7cf88f0d
364 branch: stable
364 branch: stable
365 tag: tip
365 tag: tip
366 user: test
366 user: test
367 date: Thu Jan 01 00:00:00 1970 +0000
367 date: Thu Jan 01 00:00:00 1970 +0000
368 summary: another change for branch stable
368 summary: another change for branch stable
369
369
370
370
371 $ rm -r ua
371 $ rm -r ua
372
372
373
373
374 Testing default checkout:
374 Testing default checkout:
375
375
376 $ hg clone a ua
376 $ hg clone a ua
377 updating to branch default
377 updating to branch default
378 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
378 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
379
379
380 Repo ua has both heads:
380 Repo ua has both heads:
381
381
382 $ hg -R ua heads
382 $ hg -R ua heads
383 changeset: 15:0aae7cf88f0d
383 changeset: 15:0aae7cf88f0d
384 branch: stable
384 branch: stable
385 tag: tip
385 tag: tip
386 user: test
386 user: test
387 date: Thu Jan 01 00:00:00 1970 +0000
387 date: Thu Jan 01 00:00:00 1970 +0000
388 summary: another change for branch stable
388 summary: another change for branch stable
389
389
390 changeset: 12:f21241060d6a
390 changeset: 12:f21241060d6a
391 user: test
391 user: test
392 date: Thu Jan 01 00:00:00 1970 +0000
392 date: Thu Jan 01 00:00:00 1970 +0000
393 summary: hacked default
393 summary: hacked default
394
394
395
395
396 Branch 'default' is checked out:
396 Branch 'default' is checked out:
397
397
398 $ hg -R ua parents
398 $ hg -R ua parents
399 changeset: 12:f21241060d6a
399 changeset: 12:f21241060d6a
400 user: test
400 user: test
401 date: Thu Jan 01 00:00:00 1970 +0000
401 date: Thu Jan 01 00:00:00 1970 +0000
402 summary: hacked default
402 summary: hacked default
403
403
404 Test clone with a branch named "@" (issue3677)
404 Test clone with a branch named "@" (issue3677)
405
405
406 $ hg -R ua branch @
406 $ hg -R ua branch @
407 marked working directory as branch @
407 marked working directory as branch @
408 $ hg -R ua commit -m 'created branch @'
408 $ hg -R ua commit -m 'created branch @'
409 $ hg clone ua atbranch
409 $ hg clone ua atbranch
410 updating to branch default
410 updating to branch default
411 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
411 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
412 $ hg -R atbranch heads
412 $ hg -R atbranch heads
413 changeset: 16:798b6d97153e
413 changeset: 16:798b6d97153e
414 branch: @
414 branch: @
415 tag: tip
415 tag: tip
416 parent: 12:f21241060d6a
416 parent: 12:f21241060d6a
417 user: test
417 user: test
418 date: Thu Jan 01 00:00:00 1970 +0000
418 date: Thu Jan 01 00:00:00 1970 +0000
419 summary: created branch @
419 summary: created branch @
420
420
421 changeset: 15:0aae7cf88f0d
421 changeset: 15:0aae7cf88f0d
422 branch: stable
422 branch: stable
423 user: test
423 user: test
424 date: Thu Jan 01 00:00:00 1970 +0000
424 date: Thu Jan 01 00:00:00 1970 +0000
425 summary: another change for branch stable
425 summary: another change for branch stable
426
426
427 changeset: 12:f21241060d6a
427 changeset: 12:f21241060d6a
428 user: test
428 user: test
429 date: Thu Jan 01 00:00:00 1970 +0000
429 date: Thu Jan 01 00:00:00 1970 +0000
430 summary: hacked default
430 summary: hacked default
431
431
432 $ hg -R atbranch parents
432 $ hg -R atbranch parents
433 changeset: 12:f21241060d6a
433 changeset: 12:f21241060d6a
434 user: test
434 user: test
435 date: Thu Jan 01 00:00:00 1970 +0000
435 date: Thu Jan 01 00:00:00 1970 +0000
436 summary: hacked default
436 summary: hacked default
437
437
438
438
439 $ rm -r ua atbranch
439 $ rm -r ua atbranch
440
440
441
441
442 Testing #<branch>:
442 Testing #<branch>:
443
443
444 $ hg clone -u . a#stable ua
444 $ hg clone -u . a#stable ua
445 adding changesets
445 adding changesets
446 adding manifests
446 adding manifests
447 adding file changes
447 adding file changes
448 added 14 changesets with 14 changes to 3 files
448 added 14 changesets with 14 changes to 3 files
449 new changesets acb14030fe0a:0aae7cf88f0d
449 new changesets acb14030fe0a:0aae7cf88f0d
450 updating to branch stable
450 updating to branch stable
451 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
451 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
452
452
453 Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6):
453 Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6):
454
454
455 $ hg -R ua heads
455 $ hg -R ua heads
456 changeset: 13:0aae7cf88f0d
456 changeset: 13:0aae7cf88f0d
457 branch: stable
457 branch: stable
458 tag: tip
458 tag: tip
459 user: test
459 user: test
460 date: Thu Jan 01 00:00:00 1970 +0000
460 date: Thu Jan 01 00:00:00 1970 +0000
461 summary: another change for branch stable
461 summary: another change for branch stable
462
462
463 changeset: 10:a7949464abda
463 changeset: 10:a7949464abda
464 user: test
464 user: test
465 date: Thu Jan 01 00:00:00 1970 +0000
465 date: Thu Jan 01 00:00:00 1970 +0000
466 summary: test
466 summary: test
467
467
468
468
469 Same revision checked out in repo a and ua:
469 Same revision checked out in repo a and ua:
470
470
471 $ hg -R a parents --template "{node|short}\n"
471 $ hg -R a parents --template "{node|short}\n"
472 e8ece76546a6
472 e8ece76546a6
473 $ hg -R ua parents --template "{node|short}\n"
473 $ hg -R ua parents --template "{node|short}\n"
474 e8ece76546a6
474 e8ece76546a6
475
475
476 $ rm -r ua
476 $ rm -r ua
477
477
478
478
479 Testing -u -r <branch>:
479 Testing -u -r <branch>:
480
480
481 $ hg clone -u . -r stable a ua
481 $ hg clone -u . -r stable a ua
482 adding changesets
482 adding changesets
483 adding manifests
483 adding manifests
484 adding file changes
484 adding file changes
485 added 14 changesets with 14 changes to 3 files
485 added 14 changesets with 14 changes to 3 files
486 new changesets acb14030fe0a:0aae7cf88f0d
486 new changesets acb14030fe0a:0aae7cf88f0d
487 updating to branch stable
487 updating to branch stable
488 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
488 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
489
489
490 Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6):
490 Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6):
491
491
492 $ hg -R ua heads
492 $ hg -R ua heads
493 changeset: 13:0aae7cf88f0d
493 changeset: 13:0aae7cf88f0d
494 branch: stable
494 branch: stable
495 tag: tip
495 tag: tip
496 user: test
496 user: test
497 date: Thu Jan 01 00:00:00 1970 +0000
497 date: Thu Jan 01 00:00:00 1970 +0000
498 summary: another change for branch stable
498 summary: another change for branch stable
499
499
500 changeset: 10:a7949464abda
500 changeset: 10:a7949464abda
501 user: test
501 user: test
502 date: Thu Jan 01 00:00:00 1970 +0000
502 date: Thu Jan 01 00:00:00 1970 +0000
503 summary: test
503 summary: test
504
504
505
505
506 Same revision checked out in repo a and ua:
506 Same revision checked out in repo a and ua:
507
507
508 $ hg -R a parents --template "{node|short}\n"
508 $ hg -R a parents --template "{node|short}\n"
509 e8ece76546a6
509 e8ece76546a6
510 $ hg -R ua parents --template "{node|short}\n"
510 $ hg -R ua parents --template "{node|short}\n"
511 e8ece76546a6
511 e8ece76546a6
512
512
513 $ rm -r ua
513 $ rm -r ua
514
514
515
515
516 Testing -r <branch>:
516 Testing -r <branch>:
517
517
518 $ hg clone -r stable a ua
518 $ hg clone -r stable a ua
519 adding changesets
519 adding changesets
520 adding manifests
520 adding manifests
521 adding file changes
521 adding file changes
522 added 14 changesets with 14 changes to 3 files
522 added 14 changesets with 14 changes to 3 files
523 new changesets acb14030fe0a:0aae7cf88f0d
523 new changesets acb14030fe0a:0aae7cf88f0d
524 updating to branch stable
524 updating to branch stable
525 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
525 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
526
526
527 Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6):
527 Repo ua has branch 'stable' and 'default' (was changed in fd511e9eeea6):
528
528
529 $ hg -R ua heads
529 $ hg -R ua heads
530 changeset: 13:0aae7cf88f0d
530 changeset: 13:0aae7cf88f0d
531 branch: stable
531 branch: stable
532 tag: tip
532 tag: tip
533 user: test
533 user: test
534 date: Thu Jan 01 00:00:00 1970 +0000
534 date: Thu Jan 01 00:00:00 1970 +0000
535 summary: another change for branch stable
535 summary: another change for branch stable
536
536
537 changeset: 10:a7949464abda
537 changeset: 10:a7949464abda
538 user: test
538 user: test
539 date: Thu Jan 01 00:00:00 1970 +0000
539 date: Thu Jan 01 00:00:00 1970 +0000
540 summary: test
540 summary: test
541
541
542
542
543 Branch 'stable' is checked out:
543 Branch 'stable' is checked out:
544
544
545 $ hg -R ua parents
545 $ hg -R ua parents
546 changeset: 13:0aae7cf88f0d
546 changeset: 13:0aae7cf88f0d
547 branch: stable
547 branch: stable
548 tag: tip
548 tag: tip
549 user: test
549 user: test
550 date: Thu Jan 01 00:00:00 1970 +0000
550 date: Thu Jan 01 00:00:00 1970 +0000
551 summary: another change for branch stable
551 summary: another change for branch stable
552
552
553
553
554 $ rm -r ua
554 $ rm -r ua
555
555
556
556
557 Issue2267: Error in 1.6 hg.py: TypeError: 'NoneType' object is not
557 Issue2267: Error in 1.6 hg.py: TypeError: 'NoneType' object is not
558 iterable in addbranchrevs()
558 iterable in addbranchrevs()
559
559
560 $ cat <<EOF > simpleclone.py
560 $ cat <<EOF > simpleclone.py
561 > from mercurial import ui, hg
561 > from mercurial import ui, hg
562 > myui = ui.ui.load()
562 > myui = ui.ui.load()
563 > repo = hg.repository(myui, b'a')
563 > repo = hg.repository(myui, b'a')
564 > hg.clone(myui, {}, repo, dest=b"ua")
564 > hg.clone(myui, {}, repo, dest=b"ua")
565 > EOF
565 > EOF
566
566
567 $ "$PYTHON" simpleclone.py
567 $ "$PYTHON" simpleclone.py
568 updating to branch default
568 updating to branch default
569 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
569 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
570
570
571 $ rm -r ua
571 $ rm -r ua
572
572
573 $ cat <<EOF > branchclone.py
573 $ cat <<EOF > branchclone.py
574 > from mercurial import ui, hg, extensions
574 > from mercurial import ui, hg, extensions
575 > myui = ui.ui.load()
575 > myui = ui.ui.load()
576 > extensions.loadall(myui)
576 > extensions.loadall(myui)
577 > repo = hg.repository(myui, b'a')
577 > repo = hg.repository(myui, b'a')
578 > hg.clone(myui, {}, repo, dest=b"ua", branch=[b"stable",])
578 > hg.clone(myui, {}, repo, dest=b"ua", branch=[b"stable",])
579 > EOF
579 > EOF
580
580
581 $ "$PYTHON" branchclone.py
581 $ "$PYTHON" branchclone.py
582 adding changesets
582 adding changesets
583 adding manifests
583 adding manifests
584 adding file changes
584 adding file changes
585 added 14 changesets with 14 changes to 3 files
585 added 14 changesets with 14 changes to 3 files
586 new changesets acb14030fe0a:0aae7cf88f0d
586 new changesets acb14030fe0a:0aae7cf88f0d
587 updating to branch stable
587 updating to branch stable
588 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
588 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
589 $ rm -r ua
589 $ rm -r ua
590
590
591
591
592 Test clone with special '@' bookmark:
592 Test clone with special '@' bookmark:
593 $ cd a
593 $ cd a
594 $ hg bookmark -r a7949464abda @ # branch point of stable from default
594 $ hg bookmark -r a7949464abda @ # branch point of stable from default
595 $ hg clone . ../i
595 $ hg clone . ../i
596 updating to bookmark @
596 updating to bookmark @
597 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
597 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
598 $ hg id -i ../i
598 $ hg id -i ../i
599 a7949464abda
599 a7949464abda
600 $ rm -r ../i
600 $ rm -r ../i
601
601
602 $ hg bookmark -f -r stable @
602 $ hg bookmark -f -r stable @
603 $ hg bookmarks
603 $ hg bookmarks
604 @ 15:0aae7cf88f0d
604 @ 15:0aae7cf88f0d
605 $ hg clone . ../i
605 $ hg clone . ../i
606 updating to bookmark @ on branch stable
606 updating to bookmark @ on branch stable
607 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
607 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
608 $ hg id -i ../i
608 $ hg id -i ../i
609 0aae7cf88f0d
609 0aae7cf88f0d
610 $ cd "$TESTTMP"
610 $ cd "$TESTTMP"
611
611
612
612
613 Testing failures:
613 Testing failures:
614
614
615 $ mkdir fail
615 $ mkdir fail
616 $ cd fail
616 $ cd fail
617
617
618 No local source
618 No local source
619
619
620 $ hg clone a b
620 $ hg clone a b
621 abort: repository a not found!
621 abort: repository a not found!
622 [255]
622 [255]
623
623
624 No remote source
624 No remote source
625
625
626 #if windows
626 #if windows
627 $ hg clone http://$LOCALIP:3121/a b
627 $ hg clone http://$LOCALIP:3121/a b
628 abort: error: * (glob)
628 abort: error: * (glob)
629 [255]
629 [255]
630 #else
630 #else
631 $ hg clone http://$LOCALIP:3121/a b
631 $ hg clone http://$LOCALIP:3121/a b
632 abort: error: *refused* (glob)
632 abort: error: *refused* (glob)
633 [255]
633 [255]
634 #endif
634 #endif
635 $ rm -rf b # work around bug with http clone
635 $ rm -rf b # work around bug with http clone
636
636
637
637
638 #if unix-permissions no-root
638 #if unix-permissions no-root
639
639
640 Inaccessible source
640 Inaccessible source
641
641
642 $ mkdir a
642 $ mkdir a
643 $ chmod 000 a
643 $ chmod 000 a
644 $ hg clone a b
644 $ hg clone a b
645 abort: Permission denied: '$TESTTMP/fail/a/.hg'
645 abort: Permission denied: *$TESTTMP/fail/a/.hg* (glob)
646 [255]
646 [255]
647
647
648 Inaccessible destination
648 Inaccessible destination
649
649
650 $ hg init b
650 $ hg init b
651 $ cd b
651 $ cd b
652 $ hg clone . ../a
652 $ hg clone . ../a
653 abort: Permission denied: '../a'
653 abort: Permission denied: *../a* (glob)
654 [255]
654 [255]
655 $ cd ..
655 $ cd ..
656 $ chmod 700 a
656 $ chmod 700 a
657 $ rm -r a b
657 $ rm -r a b
658
658
659 #endif
659 #endif
660
660
661
661
662 #if fifo
662 #if fifo
663
663
664 Source of wrong type
664 Source of wrong type
665
665
666 $ mkfifo a
666 $ mkfifo a
667 $ hg clone a b
667 $ hg clone a b
668 abort: $ENOTDIR$: '$TESTTMP/fail/a/.hg'
668 abort: $ENOTDIR$: *$TESTTMP/fail/a/.hg* (glob)
669 [255]
669 [255]
670 $ rm a
670 $ rm a
671
671
672 #endif
672 #endif
673
673
674 Default destination, same directory
674 Default destination, same directory
675
675
676 $ hg init q
676 $ hg init q
677 $ hg clone q
677 $ hg clone q
678 destination directory: q
678 destination directory: q
679 abort: destination 'q' is not empty
679 abort: destination 'q' is not empty
680 [255]
680 [255]
681
681
682 destination directory not empty
682 destination directory not empty
683
683
684 $ mkdir a
684 $ mkdir a
685 $ echo stuff > a/a
685 $ echo stuff > a/a
686 $ hg clone q a
686 $ hg clone q a
687 abort: destination 'a' is not empty
687 abort: destination 'a' is not empty
688 [255]
688 [255]
689
689
690
690
691 #if unix-permissions no-root
691 #if unix-permissions no-root
692
692
693 leave existing directory in place after clone failure
693 leave existing directory in place after clone failure
694
694
695 $ hg init c
695 $ hg init c
696 $ cd c
696 $ cd c
697 $ echo c > c
697 $ echo c > c
698 $ hg commit -A -m test
698 $ hg commit -A -m test
699 adding c
699 adding c
700 $ chmod -rx .hg/store/data
700 $ chmod -rx .hg/store/data
701 $ cd ..
701 $ cd ..
702 $ mkdir d
702 $ mkdir d
703 $ hg clone c d 2> err
703 $ hg clone c d 2> err
704 [255]
704 [255]
705 $ test -d d
705 $ test -d d
706 $ test -d d/.hg
706 $ test -d d/.hg
707 [1]
707 [1]
708
708
709 re-enable perm to allow deletion
709 re-enable perm to allow deletion
710
710
711 $ chmod +rx c/.hg/store/data
711 $ chmod +rx c/.hg/store/data
712
712
713 #endif
713 #endif
714
714
715 $ cd ..
715 $ cd ..
716
716
717 Test clone from the repository in (emulated) revlog format 0 (issue4203):
717 Test clone from the repository in (emulated) revlog format 0 (issue4203):
718
718
719 $ mkdir issue4203
719 $ mkdir issue4203
720 $ mkdir -p src/.hg
720 $ mkdir -p src/.hg
721 $ echo foo > src/foo
721 $ echo foo > src/foo
722 $ hg -R src add src/foo
722 $ hg -R src add src/foo
723 $ hg -R src commit -m '#0'
723 $ hg -R src commit -m '#0'
724 $ hg -R src log -q
724 $ hg -R src log -q
725 0:e1bab28bca43
725 0:e1bab28bca43
726 $ hg clone -U -q src dst
726 $ hg clone -U -q src dst
727 $ hg -R dst log -q
727 $ hg -R dst log -q
728 0:e1bab28bca43
728 0:e1bab28bca43
729
729
730 Create repositories to test auto sharing functionality
730 Create repositories to test auto sharing functionality
731
731
732 $ cat >> $HGRCPATH << EOF
732 $ cat >> $HGRCPATH << EOF
733 > [extensions]
733 > [extensions]
734 > share=
734 > share=
735 > EOF
735 > EOF
736
736
737 $ hg init empty
737 $ hg init empty
738 $ hg init source1a
738 $ hg init source1a
739 $ cd source1a
739 $ cd source1a
740 $ echo initial1 > foo
740 $ echo initial1 > foo
741 $ hg -q commit -A -m initial
741 $ hg -q commit -A -m initial
742 $ echo second > foo
742 $ echo second > foo
743 $ hg commit -m second
743 $ hg commit -m second
744 $ cd ..
744 $ cd ..
745
745
746 $ hg init filteredrev0
746 $ hg init filteredrev0
747 $ cd filteredrev0
747 $ cd filteredrev0
748 $ cat >> .hg/hgrc << EOF
748 $ cat >> .hg/hgrc << EOF
749 > [experimental]
749 > [experimental]
750 > evolution.createmarkers=True
750 > evolution.createmarkers=True
751 > EOF
751 > EOF
752 $ echo initial1 > foo
752 $ echo initial1 > foo
753 $ hg -q commit -A -m initial0
753 $ hg -q commit -A -m initial0
754 $ hg -q up -r null
754 $ hg -q up -r null
755 $ echo initial2 > foo
755 $ echo initial2 > foo
756 $ hg -q commit -A -m initial1
756 $ hg -q commit -A -m initial1
757 $ hg debugobsolete c05d5c47a5cf81401869999f3d05f7d699d2b29a e082c1832e09a7d1e78b7fd49a592d372de854c8
757 $ hg debugobsolete c05d5c47a5cf81401869999f3d05f7d699d2b29a e082c1832e09a7d1e78b7fd49a592d372de854c8
758 obsoleted 1 changesets
758 obsoleted 1 changesets
759 $ cd ..
759 $ cd ..
760
760
761 $ hg -q clone --pull source1a source1b
761 $ hg -q clone --pull source1a source1b
762 $ cd source1a
762 $ cd source1a
763 $ hg bookmark bookA
763 $ hg bookmark bookA
764 $ echo 1a > foo
764 $ echo 1a > foo
765 $ hg commit -m 1a
765 $ hg commit -m 1a
766 $ cd ../source1b
766 $ cd ../source1b
767 $ hg -q up -r 0
767 $ hg -q up -r 0
768 $ echo head1 > foo
768 $ echo head1 > foo
769 $ hg commit -m head1
769 $ hg commit -m head1
770 created new head
770 created new head
771 $ hg bookmark head1
771 $ hg bookmark head1
772 $ hg -q up -r 0
772 $ hg -q up -r 0
773 $ echo head2 > foo
773 $ echo head2 > foo
774 $ hg commit -m head2
774 $ hg commit -m head2
775 created new head
775 created new head
776 $ hg bookmark head2
776 $ hg bookmark head2
777 $ hg -q up -r 0
777 $ hg -q up -r 0
778 $ hg branch branch1
778 $ hg branch branch1
779 marked working directory as branch branch1
779 marked working directory as branch branch1
780 (branches are permanent and global, did you want a bookmark?)
780 (branches are permanent and global, did you want a bookmark?)
781 $ echo branch1 > foo
781 $ echo branch1 > foo
782 $ hg commit -m branch1
782 $ hg commit -m branch1
783 $ hg -q up -r 0
783 $ hg -q up -r 0
784 $ hg branch branch2
784 $ hg branch branch2
785 marked working directory as branch branch2
785 marked working directory as branch branch2
786 $ echo branch2 > foo
786 $ echo branch2 > foo
787 $ hg commit -m branch2
787 $ hg commit -m branch2
788 $ cd ..
788 $ cd ..
789 $ hg init source2
789 $ hg init source2
790 $ cd source2
790 $ cd source2
791 $ echo initial2 > foo
791 $ echo initial2 > foo
792 $ hg -q commit -A -m initial2
792 $ hg -q commit -A -m initial2
793 $ echo second > foo
793 $ echo second > foo
794 $ hg commit -m second
794 $ hg commit -m second
795 $ cd ..
795 $ cd ..
796
796
797 Clone with auto share from an empty repo should not result in share
797 Clone with auto share from an empty repo should not result in share
798
798
799 $ mkdir share
799 $ mkdir share
800 $ hg --config share.pool=share clone empty share-empty
800 $ hg --config share.pool=share clone empty share-empty
801 (not using pooled storage: remote appears to be empty)
801 (not using pooled storage: remote appears to be empty)
802 updating to branch default
802 updating to branch default
803 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
803 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
804 $ ls share
804 $ ls share
805 $ test -d share-empty/.hg/store
805 $ test -d share-empty/.hg/store
806 $ test -f share-empty/.hg/sharedpath
806 $ test -f share-empty/.hg/sharedpath
807 [1]
807 [1]
808
808
809 Clone with auto share from a repo with filtered revision 0 should not result in share
809 Clone with auto share from a repo with filtered revision 0 should not result in share
810
810
811 $ hg --config share.pool=share clone filteredrev0 share-filtered
811 $ hg --config share.pool=share clone filteredrev0 share-filtered
812 (not using pooled storage: unable to resolve identity of remote)
812 (not using pooled storage: unable to resolve identity of remote)
813 requesting all changes
813 requesting all changes
814 adding changesets
814 adding changesets
815 adding manifests
815 adding manifests
816 adding file changes
816 adding file changes
817 added 1 changesets with 1 changes to 1 files
817 added 1 changesets with 1 changes to 1 files
818 new changesets e082c1832e09
818 new changesets e082c1832e09
819 updating to branch default
819 updating to branch default
820 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
820 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
821
821
822 Clone from repo with content should result in shared store being created
822 Clone from repo with content should result in shared store being created
823
823
824 $ hg --config share.pool=share clone source1a share-dest1a
824 $ hg --config share.pool=share clone source1a share-dest1a
825 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
825 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
826 requesting all changes
826 requesting all changes
827 adding changesets
827 adding changesets
828 adding manifests
828 adding manifests
829 adding file changes
829 adding file changes
830 added 3 changesets with 3 changes to 1 files
830 added 3 changesets with 3 changes to 1 files
831 new changesets b5f04eac9d8f:e5bfe23c0b47
831 new changesets b5f04eac9d8f:e5bfe23c0b47
832 searching for changes
832 searching for changes
833 no changes found
833 no changes found
834 adding remote bookmark bookA
834 adding remote bookmark bookA
835 updating working directory
835 updating working directory
836 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
836 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
837
837
838 The shared repo should have been created
838 The shared repo should have been created
839
839
840 $ ls share
840 $ ls share
841 b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1
841 b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1
842
842
843 The destination should point to it
843 The destination should point to it
844
844
845 $ cat share-dest1a/.hg/sharedpath; echo
845 $ cat share-dest1a/.hg/sharedpath; echo
846 $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg
846 $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg
847
847
848 The destination should have bookmarks
848 The destination should have bookmarks
849
849
850 $ hg -R share-dest1a bookmarks
850 $ hg -R share-dest1a bookmarks
851 bookA 2:e5bfe23c0b47
851 bookA 2:e5bfe23c0b47
852
852
853 The default path should be the remote, not the share
853 The default path should be the remote, not the share
854
854
855 $ hg -R share-dest1a config paths.default
855 $ hg -R share-dest1a config paths.default
856 $TESTTMP/source1a
856 $TESTTMP/source1a
857
857
858 Clone with existing share dir should result in pull + share
858 Clone with existing share dir should result in pull + share
859
859
860 $ hg --config share.pool=share clone source1b share-dest1b
860 $ hg --config share.pool=share clone source1b share-dest1b
861 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
861 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
862 searching for changes
862 searching for changes
863 adding changesets
863 adding changesets
864 adding manifests
864 adding manifests
865 adding file changes
865 adding file changes
866 added 4 changesets with 4 changes to 1 files (+4 heads)
866 added 4 changesets with 4 changes to 1 files (+4 heads)
867 adding remote bookmark head1
867 adding remote bookmark head1
868 adding remote bookmark head2
868 adding remote bookmark head2
869 new changesets 4a8dc1ab4c13:6bacf4683960
869 new changesets 4a8dc1ab4c13:6bacf4683960
870 updating working directory
870 updating working directory
871 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
871 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
872
872
873 $ ls share
873 $ ls share
874 b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1
874 b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1
875
875
876 $ cat share-dest1b/.hg/sharedpath; echo
876 $ cat share-dest1b/.hg/sharedpath; echo
877 $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg
877 $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg
878
878
879 We only get bookmarks from the remote, not everything in the share
879 We only get bookmarks from the remote, not everything in the share
880
880
881 $ hg -R share-dest1b bookmarks
881 $ hg -R share-dest1b bookmarks
882 head1 3:4a8dc1ab4c13
882 head1 3:4a8dc1ab4c13
883 head2 4:99f71071f117
883 head2 4:99f71071f117
884
884
885 Default path should be source, not share.
885 Default path should be source, not share.
886
886
887 $ hg -R share-dest1b config paths.default
887 $ hg -R share-dest1b config paths.default
888 $TESTTMP/source1b
888 $TESTTMP/source1b
889
889
890 Checked out revision should be head of default branch
890 Checked out revision should be head of default branch
891
891
892 $ hg -R share-dest1b log -r .
892 $ hg -R share-dest1b log -r .
893 changeset: 4:99f71071f117
893 changeset: 4:99f71071f117
894 bookmark: head2
894 bookmark: head2
895 parent: 0:b5f04eac9d8f
895 parent: 0:b5f04eac9d8f
896 user: test
896 user: test
897 date: Thu Jan 01 00:00:00 1970 +0000
897 date: Thu Jan 01 00:00:00 1970 +0000
898 summary: head2
898 summary: head2
899
899
900
900
901 Clone from unrelated repo should result in new share
901 Clone from unrelated repo should result in new share
902
902
903 $ hg --config share.pool=share clone source2 share-dest2
903 $ hg --config share.pool=share clone source2 share-dest2
904 (sharing from new pooled repository 22aeff664783fd44c6d9b435618173c118c3448e)
904 (sharing from new pooled repository 22aeff664783fd44c6d9b435618173c118c3448e)
905 requesting all changes
905 requesting all changes
906 adding changesets
906 adding changesets
907 adding manifests
907 adding manifests
908 adding file changes
908 adding file changes
909 added 2 changesets with 2 changes to 1 files
909 added 2 changesets with 2 changes to 1 files
910 new changesets 22aeff664783:63cf6c3dba4a
910 new changesets 22aeff664783:63cf6c3dba4a
911 searching for changes
911 searching for changes
912 no changes found
912 no changes found
913 updating working directory
913 updating working directory
914 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
914 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
915
915
916 $ ls share
916 $ ls share
917 22aeff664783fd44c6d9b435618173c118c3448e
917 22aeff664783fd44c6d9b435618173c118c3448e
918 b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1
918 b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1
919
919
920 remote naming mode works as advertised
920 remote naming mode works as advertised
921
921
922 $ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1a share-remote1a
922 $ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1a share-remote1a
923 (sharing from new pooled repository 195bb1fcdb595c14a6c13e0269129ed78f6debde)
923 (sharing from new pooled repository 195bb1fcdb595c14a6c13e0269129ed78f6debde)
924 requesting all changes
924 requesting all changes
925 adding changesets
925 adding changesets
926 adding manifests
926 adding manifests
927 adding file changes
927 adding file changes
928 added 3 changesets with 3 changes to 1 files
928 added 3 changesets with 3 changes to 1 files
929 new changesets b5f04eac9d8f:e5bfe23c0b47
929 new changesets b5f04eac9d8f:e5bfe23c0b47
930 searching for changes
930 searching for changes
931 no changes found
931 no changes found
932 adding remote bookmark bookA
932 adding remote bookmark bookA
933 updating working directory
933 updating working directory
934 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
934 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
935
935
936 $ ls shareremote
936 $ ls shareremote
937 195bb1fcdb595c14a6c13e0269129ed78f6debde
937 195bb1fcdb595c14a6c13e0269129ed78f6debde
938
938
939 $ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1b share-remote1b
939 $ hg --config share.pool=shareremote --config share.poolnaming=remote clone source1b share-remote1b
940 (sharing from new pooled repository c0d4f83847ca2a873741feb7048a45085fd47c46)
940 (sharing from new pooled repository c0d4f83847ca2a873741feb7048a45085fd47c46)
941 requesting all changes
941 requesting all changes
942 adding changesets
942 adding changesets
943 adding manifests
943 adding manifests
944 adding file changes
944 adding file changes
945 added 6 changesets with 6 changes to 1 files (+4 heads)
945 added 6 changesets with 6 changes to 1 files (+4 heads)
946 new changesets b5f04eac9d8f:6bacf4683960
946 new changesets b5f04eac9d8f:6bacf4683960
947 searching for changes
947 searching for changes
948 no changes found
948 no changes found
949 adding remote bookmark head1
949 adding remote bookmark head1
950 adding remote bookmark head2
950 adding remote bookmark head2
951 updating working directory
951 updating working directory
952 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
952 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
953
953
954 $ ls shareremote
954 $ ls shareremote
955 195bb1fcdb595c14a6c13e0269129ed78f6debde
955 195bb1fcdb595c14a6c13e0269129ed78f6debde
956 c0d4f83847ca2a873741feb7048a45085fd47c46
956 c0d4f83847ca2a873741feb7048a45085fd47c46
957
957
958 request to clone a single revision is respected in sharing mode
958 request to clone a single revision is respected in sharing mode
959
959
960 $ hg --config share.pool=sharerevs clone -r 4a8dc1ab4c13 source1b share-1arev
960 $ hg --config share.pool=sharerevs clone -r 4a8dc1ab4c13 source1b share-1arev
961 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
961 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
962 adding changesets
962 adding changesets
963 adding manifests
963 adding manifests
964 adding file changes
964 adding file changes
965 added 2 changesets with 2 changes to 1 files
965 added 2 changesets with 2 changes to 1 files
966 new changesets b5f04eac9d8f:4a8dc1ab4c13
966 new changesets b5f04eac9d8f:4a8dc1ab4c13
967 no changes found
967 no changes found
968 adding remote bookmark head1
968 adding remote bookmark head1
969 updating working directory
969 updating working directory
970 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
970 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
971
971
972 $ hg -R share-1arev log -G
972 $ hg -R share-1arev log -G
973 @ changeset: 1:4a8dc1ab4c13
973 @ changeset: 1:4a8dc1ab4c13
974 | bookmark: head1
974 | bookmark: head1
975 | tag: tip
975 | tag: tip
976 | user: test
976 | user: test
977 | date: Thu Jan 01 00:00:00 1970 +0000
977 | date: Thu Jan 01 00:00:00 1970 +0000
978 | summary: head1
978 | summary: head1
979 |
979 |
980 o changeset: 0:b5f04eac9d8f
980 o changeset: 0:b5f04eac9d8f
981 user: test
981 user: test
982 date: Thu Jan 01 00:00:00 1970 +0000
982 date: Thu Jan 01 00:00:00 1970 +0000
983 summary: initial
983 summary: initial
984
984
985
985
986 making another clone should only pull down requested rev
986 making another clone should only pull down requested rev
987
987
988 $ hg --config share.pool=sharerevs clone -r 99f71071f117 source1b share-1brev
988 $ hg --config share.pool=sharerevs clone -r 99f71071f117 source1b share-1brev
989 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
989 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
990 searching for changes
990 searching for changes
991 adding changesets
991 adding changesets
992 adding manifests
992 adding manifests
993 adding file changes
993 adding file changes
994 added 1 changesets with 1 changes to 1 files (+1 heads)
994 added 1 changesets with 1 changes to 1 files (+1 heads)
995 adding remote bookmark head1
995 adding remote bookmark head1
996 adding remote bookmark head2
996 adding remote bookmark head2
997 new changesets 99f71071f117
997 new changesets 99f71071f117
998 updating working directory
998 updating working directory
999 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
999 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1000
1000
1001 $ hg -R share-1brev log -G
1001 $ hg -R share-1brev log -G
1002 @ changeset: 2:99f71071f117
1002 @ changeset: 2:99f71071f117
1003 | bookmark: head2
1003 | bookmark: head2
1004 | tag: tip
1004 | tag: tip
1005 | parent: 0:b5f04eac9d8f
1005 | parent: 0:b5f04eac9d8f
1006 | user: test
1006 | user: test
1007 | date: Thu Jan 01 00:00:00 1970 +0000
1007 | date: Thu Jan 01 00:00:00 1970 +0000
1008 | summary: head2
1008 | summary: head2
1009 |
1009 |
1010 | o changeset: 1:4a8dc1ab4c13
1010 | o changeset: 1:4a8dc1ab4c13
1011 |/ bookmark: head1
1011 |/ bookmark: head1
1012 | user: test
1012 | user: test
1013 | date: Thu Jan 01 00:00:00 1970 +0000
1013 | date: Thu Jan 01 00:00:00 1970 +0000
1014 | summary: head1
1014 | summary: head1
1015 |
1015 |
1016 o changeset: 0:b5f04eac9d8f
1016 o changeset: 0:b5f04eac9d8f
1017 user: test
1017 user: test
1018 date: Thu Jan 01 00:00:00 1970 +0000
1018 date: Thu Jan 01 00:00:00 1970 +0000
1019 summary: initial
1019 summary: initial
1020
1020
1021
1021
1022 Request to clone a single branch is respected in sharing mode
1022 Request to clone a single branch is respected in sharing mode
1023
1023
1024 $ hg --config share.pool=sharebranch clone -b branch1 source1b share-1bbranch1
1024 $ hg --config share.pool=sharebranch clone -b branch1 source1b share-1bbranch1
1025 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1025 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1026 adding changesets
1026 adding changesets
1027 adding manifests
1027 adding manifests
1028 adding file changes
1028 adding file changes
1029 added 2 changesets with 2 changes to 1 files
1029 added 2 changesets with 2 changes to 1 files
1030 new changesets b5f04eac9d8f:5f92a6c1a1b1
1030 new changesets b5f04eac9d8f:5f92a6c1a1b1
1031 no changes found
1031 no changes found
1032 updating working directory
1032 updating working directory
1033 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1033 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1034
1034
1035 $ hg -R share-1bbranch1 log -G
1035 $ hg -R share-1bbranch1 log -G
1036 o changeset: 1:5f92a6c1a1b1
1036 o changeset: 1:5f92a6c1a1b1
1037 | branch: branch1
1037 | branch: branch1
1038 | tag: tip
1038 | tag: tip
1039 | user: test
1039 | user: test
1040 | date: Thu Jan 01 00:00:00 1970 +0000
1040 | date: Thu Jan 01 00:00:00 1970 +0000
1041 | summary: branch1
1041 | summary: branch1
1042 |
1042 |
1043 @ changeset: 0:b5f04eac9d8f
1043 @ changeset: 0:b5f04eac9d8f
1044 user: test
1044 user: test
1045 date: Thu Jan 01 00:00:00 1970 +0000
1045 date: Thu Jan 01 00:00:00 1970 +0000
1046 summary: initial
1046 summary: initial
1047
1047
1048
1048
1049 $ hg --config share.pool=sharebranch clone -b branch2 source1b share-1bbranch2
1049 $ hg --config share.pool=sharebranch clone -b branch2 source1b share-1bbranch2
1050 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1050 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1051 searching for changes
1051 searching for changes
1052 adding changesets
1052 adding changesets
1053 adding manifests
1053 adding manifests
1054 adding file changes
1054 adding file changes
1055 added 1 changesets with 1 changes to 1 files (+1 heads)
1055 added 1 changesets with 1 changes to 1 files (+1 heads)
1056 new changesets 6bacf4683960
1056 new changesets 6bacf4683960
1057 updating working directory
1057 updating working directory
1058 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1058 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1059
1059
1060 $ hg -R share-1bbranch2 log -G
1060 $ hg -R share-1bbranch2 log -G
1061 o changeset: 2:6bacf4683960
1061 o changeset: 2:6bacf4683960
1062 | branch: branch2
1062 | branch: branch2
1063 | tag: tip
1063 | tag: tip
1064 | parent: 0:b5f04eac9d8f
1064 | parent: 0:b5f04eac9d8f
1065 | user: test
1065 | user: test
1066 | date: Thu Jan 01 00:00:00 1970 +0000
1066 | date: Thu Jan 01 00:00:00 1970 +0000
1067 | summary: branch2
1067 | summary: branch2
1068 |
1068 |
1069 | o changeset: 1:5f92a6c1a1b1
1069 | o changeset: 1:5f92a6c1a1b1
1070 |/ branch: branch1
1070 |/ branch: branch1
1071 | user: test
1071 | user: test
1072 | date: Thu Jan 01 00:00:00 1970 +0000
1072 | date: Thu Jan 01 00:00:00 1970 +0000
1073 | summary: branch1
1073 | summary: branch1
1074 |
1074 |
1075 @ changeset: 0:b5f04eac9d8f
1075 @ changeset: 0:b5f04eac9d8f
1076 user: test
1076 user: test
1077 date: Thu Jan 01 00:00:00 1970 +0000
1077 date: Thu Jan 01 00:00:00 1970 +0000
1078 summary: initial
1078 summary: initial
1079
1079
1080
1080
1081 -U is respected in share clone mode
1081 -U is respected in share clone mode
1082
1082
1083 $ hg --config share.pool=share clone -U source1a share-1anowc
1083 $ hg --config share.pool=share clone -U source1a share-1anowc
1084 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1084 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1085 searching for changes
1085 searching for changes
1086 no changes found
1086 no changes found
1087 adding remote bookmark bookA
1087 adding remote bookmark bookA
1088
1088
1089 $ ls share-1anowc
1089 $ ls share-1anowc
1090
1090
1091 Test that auto sharing doesn't cause failure of "hg clone local remote"
1091 Test that auto sharing doesn't cause failure of "hg clone local remote"
1092
1092
1093 $ cd $TESTTMP
1093 $ cd $TESTTMP
1094 $ hg -R a id -r 0
1094 $ hg -R a id -r 0
1095 acb14030fe0a
1095 acb14030fe0a
1096 $ hg id -R remote -r 0
1096 $ hg id -R remote -r 0
1097 abort: repository remote not found!
1097 abort: repository remote not found!
1098 [255]
1098 [255]
1099 $ hg --config share.pool=share -q clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" a ssh://user@dummy/remote
1099 $ hg --config share.pool=share -q clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" a ssh://user@dummy/remote
1100 $ hg -R remote id -r 0
1100 $ hg -R remote id -r 0
1101 acb14030fe0a
1101 acb14030fe0a
1102
1102
1103 Cloning into pooled storage doesn't race (issue5104)
1103 Cloning into pooled storage doesn't race (issue5104)
1104
1104
1105 $ HGPOSTLOCKDELAY=2.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace1 > race1.log 2>&1 &
1105 $ HGPOSTLOCKDELAY=2.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace1 > race1.log 2>&1 &
1106 $ HGPRELOCKDELAY=1.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace2 > race2.log 2>&1
1106 $ HGPRELOCKDELAY=1.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace2 > race2.log 2>&1
1107 $ wait
1107 $ wait
1108
1108
1109 $ hg -R share-destrace1 log -r tip
1109 $ hg -R share-destrace1 log -r tip
1110 changeset: 2:e5bfe23c0b47
1110 changeset: 2:e5bfe23c0b47
1111 bookmark: bookA
1111 bookmark: bookA
1112 tag: tip
1112 tag: tip
1113 user: test
1113 user: test
1114 date: Thu Jan 01 00:00:00 1970 +0000
1114 date: Thu Jan 01 00:00:00 1970 +0000
1115 summary: 1a
1115 summary: 1a
1116
1116
1117
1117
1118 $ hg -R share-destrace2 log -r tip
1118 $ hg -R share-destrace2 log -r tip
1119 changeset: 2:e5bfe23c0b47
1119 changeset: 2:e5bfe23c0b47
1120 bookmark: bookA
1120 bookmark: bookA
1121 tag: tip
1121 tag: tip
1122 user: test
1122 user: test
1123 date: Thu Jan 01 00:00:00 1970 +0000
1123 date: Thu Jan 01 00:00:00 1970 +0000
1124 summary: 1a
1124 summary: 1a
1125
1125
1126 One repo should be new, the other should be shared from the pool. We
1126 One repo should be new, the other should be shared from the pool. We
1127 don't care which is which, so we just make sure we always print the
1127 don't care which is which, so we just make sure we always print the
1128 one containing "new pooled" first, then one one containing "existing
1128 one containing "new pooled" first, then one one containing "existing
1129 pooled".
1129 pooled".
1130
1130
1131 $ (grep 'new pooled' race1.log > /dev/null && cat race1.log || cat race2.log) | grep -v lock
1131 $ (grep 'new pooled' race1.log > /dev/null && cat race1.log || cat race2.log) | grep -v lock
1132 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1132 (sharing from new pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1133 requesting all changes
1133 requesting all changes
1134 adding changesets
1134 adding changesets
1135 adding manifests
1135 adding manifests
1136 adding file changes
1136 adding file changes
1137 added 3 changesets with 3 changes to 1 files
1137 added 3 changesets with 3 changes to 1 files
1138 new changesets b5f04eac9d8f:e5bfe23c0b47
1138 new changesets b5f04eac9d8f:e5bfe23c0b47
1139 searching for changes
1139 searching for changes
1140 no changes found
1140 no changes found
1141 adding remote bookmark bookA
1141 adding remote bookmark bookA
1142 updating working directory
1142 updating working directory
1143 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1143 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1144
1144
1145 $ (grep 'existing pooled' race1.log > /dev/null && cat race1.log || cat race2.log) | grep -v lock
1145 $ (grep 'existing pooled' race1.log > /dev/null && cat race1.log || cat race2.log) | grep -v lock
1146 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1146 (sharing from existing pooled repository b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1)
1147 searching for changes
1147 searching for changes
1148 no changes found
1148 no changes found
1149 adding remote bookmark bookA
1149 adding remote bookmark bookA
1150 updating working directory
1150 updating working directory
1151 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1151 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1152
1152
1153 SEC: check for unsafe ssh url
1153 SEC: check for unsafe ssh url
1154
1154
1155 $ cat >> $HGRCPATH << EOF
1155 $ cat >> $HGRCPATH << EOF
1156 > [ui]
1156 > [ui]
1157 > ssh = sh -c "read l; read l; read l"
1157 > ssh = sh -c "read l; read l; read l"
1158 > EOF
1158 > EOF
1159
1159
1160 $ hg clone 'ssh://-oProxyCommand=touch${IFS}owned/path'
1160 $ hg clone 'ssh://-oProxyCommand=touch${IFS}owned/path'
1161 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path'
1161 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path'
1162 [255]
1162 [255]
1163 $ hg clone 'ssh://%2DoProxyCommand=touch${IFS}owned/path'
1163 $ hg clone 'ssh://%2DoProxyCommand=touch${IFS}owned/path'
1164 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path'
1164 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path'
1165 [255]
1165 [255]
1166 $ hg clone 'ssh://fakehost|touch%20owned/path'
1166 $ hg clone 'ssh://fakehost|touch%20owned/path'
1167 abort: no suitable response from remote hg!
1167 abort: no suitable response from remote hg!
1168 [255]
1168 [255]
1169 $ hg clone 'ssh://fakehost%7Ctouch%20owned/path'
1169 $ hg clone 'ssh://fakehost%7Ctouch%20owned/path'
1170 abort: no suitable response from remote hg!
1170 abort: no suitable response from remote hg!
1171 [255]
1171 [255]
1172
1172
1173 $ hg clone 'ssh://-oProxyCommand=touch owned%20foo@example.com/nonexistent/path'
1173 $ hg clone 'ssh://-oProxyCommand=touch owned%20foo@example.com/nonexistent/path'
1174 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch owned foo@example.com/nonexistent/path'
1174 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch owned foo@example.com/nonexistent/path'
1175 [255]
1175 [255]
1176
1176
1177 #if windows
1177 #if windows
1178 $ hg clone "ssh://%26touch%20owned%20/" --debug
1178 $ hg clone "ssh://%26touch%20owned%20/" --debug
1179 running sh -c "read l; read l; read l" "&touch owned " "hg -R . serve --stdio"
1179 running sh -c "read l; read l; read l" "&touch owned " "hg -R . serve --stdio"
1180 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1180 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1181 sending hello command
1181 sending hello command
1182 sending between command
1182 sending between command
1183 abort: no suitable response from remote hg!
1183 abort: no suitable response from remote hg!
1184 [255]
1184 [255]
1185 $ hg clone "ssh://example.com:%26touch%20owned%20/" --debug
1185 $ hg clone "ssh://example.com:%26touch%20owned%20/" --debug
1186 running sh -c "read l; read l; read l" -p "&touch owned " example.com "hg -R . serve --stdio"
1186 running sh -c "read l; read l; read l" -p "&touch owned " example.com "hg -R . serve --stdio"
1187 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1187 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1188 sending hello command
1188 sending hello command
1189 sending between command
1189 sending between command
1190 abort: no suitable response from remote hg!
1190 abort: no suitable response from remote hg!
1191 [255]
1191 [255]
1192 #else
1192 #else
1193 $ hg clone "ssh://%3btouch%20owned%20/" --debug
1193 $ hg clone "ssh://%3btouch%20owned%20/" --debug
1194 running sh -c "read l; read l; read l" ';touch owned ' 'hg -R . serve --stdio'
1194 running sh -c "read l; read l; read l" ';touch owned ' 'hg -R . serve --stdio'
1195 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1195 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1196 sending hello command
1196 sending hello command
1197 sending between command
1197 sending between command
1198 abort: no suitable response from remote hg!
1198 abort: no suitable response from remote hg!
1199 [255]
1199 [255]
1200 $ hg clone "ssh://example.com:%3btouch%20owned%20/" --debug
1200 $ hg clone "ssh://example.com:%3btouch%20owned%20/" --debug
1201 running sh -c "read l; read l; read l" -p ';touch owned ' example.com 'hg -R . serve --stdio'
1201 running sh -c "read l; read l; read l" -p ';touch owned ' example.com 'hg -R . serve --stdio'
1202 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1202 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1203 sending hello command
1203 sending hello command
1204 sending between command
1204 sending between command
1205 abort: no suitable response from remote hg!
1205 abort: no suitable response from remote hg!
1206 [255]
1206 [255]
1207 #endif
1207 #endif
1208
1208
1209 $ hg clone "ssh://v-alid.example.com/" --debug
1209 $ hg clone "ssh://v-alid.example.com/" --debug
1210 running sh -c "read l; read l; read l" v-alid\.example\.com ['"]hg -R \. serve --stdio['"] (re)
1210 running sh -c "read l; read l; read l" v-alid\.example\.com ['"]hg -R \. serve --stdio['"] (re)
1211 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1211 sending upgrade request: * proto=exp-ssh-v2-0003 (glob) (sshv2 !)
1212 sending hello command
1212 sending hello command
1213 sending between command
1213 sending between command
1214 abort: no suitable response from remote hg!
1214 abort: no suitable response from remote hg!
1215 [255]
1215 [255]
1216
1216
1217 We should not have created a file named owned - if it exists, the
1217 We should not have created a file named owned - if it exists, the
1218 attack succeeded.
1218 attack succeeded.
1219 $ if test -f owned; then echo 'you got owned'; fi
1219 $ if test -f owned; then echo 'you got owned'; fi
1220
1220
1221 Cloning without fsmonitor enabled does not print a warning for small repos
1221 Cloning without fsmonitor enabled does not print a warning for small repos
1222
1222
1223 $ hg clone a fsmonitor-default
1223 $ hg clone a fsmonitor-default
1224 updating to bookmark @ on branch stable
1224 updating to bookmark @ on branch stable
1225 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1225 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1226
1226
1227 Lower the warning threshold to simulate a large repo
1227 Lower the warning threshold to simulate a large repo
1228
1228
1229 $ cat >> $HGRCPATH << EOF
1229 $ cat >> $HGRCPATH << EOF
1230 > [fsmonitor]
1230 > [fsmonitor]
1231 > warn_update_file_count = 2
1231 > warn_update_file_count = 2
1232 > EOF
1232 > EOF
1233
1233
1234 We should see a warning about no fsmonitor on supported platforms
1234 We should see a warning about no fsmonitor on supported platforms
1235
1235
1236 #if linuxormacos no-fsmonitor
1236 #if linuxormacos no-fsmonitor
1237 $ hg clone a nofsmonitor
1237 $ hg clone a nofsmonitor
1238 updating to bookmark @ on branch stable
1238 updating to bookmark @ on branch stable
1239 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor")
1239 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor")
1240 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1240 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1241 #else
1241 #else
1242 $ hg clone a nofsmonitor
1242 $ hg clone a nofsmonitor
1243 updating to bookmark @ on branch stable
1243 updating to bookmark @ on branch stable
1244 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1244 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1245 #endif
1245 #endif
1246
1246
1247 We should not see warning about fsmonitor when it is enabled
1247 We should not see warning about fsmonitor when it is enabled
1248
1248
1249 #if fsmonitor
1249 #if fsmonitor
1250 $ hg clone a fsmonitor-enabled
1250 $ hg clone a fsmonitor-enabled
1251 updating to bookmark @ on branch stable
1251 updating to bookmark @ on branch stable
1252 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1252 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1253 #endif
1253 #endif
1254
1254
1255 We can disable the fsmonitor warning
1255 We can disable the fsmonitor warning
1256
1256
1257 $ hg --config fsmonitor.warn_when_unused=false clone a fsmonitor-disable-warning
1257 $ hg --config fsmonitor.warn_when_unused=false clone a fsmonitor-disable-warning
1258 updating to bookmark @ on branch stable
1258 updating to bookmark @ on branch stable
1259 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1259 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1260
1260
1261 Loaded fsmonitor but disabled in config should still print warning
1261 Loaded fsmonitor but disabled in config should still print warning
1262
1262
1263 #if linuxormacos fsmonitor
1263 #if linuxormacos fsmonitor
1264 $ hg --config fsmonitor.mode=off clone a fsmonitor-mode-off
1264 $ hg --config fsmonitor.mode=off clone a fsmonitor-mode-off
1265 updating to bookmark @ on branch stable
1265 updating to bookmark @ on branch stable
1266 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") (fsmonitor !)
1266 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") (fsmonitor !)
1267 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1267 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1268 #endif
1268 #endif
1269
1269
1270 Warning not printed if working directory isn't empty
1270 Warning not printed if working directory isn't empty
1271
1271
1272 $ hg -q clone a fsmonitor-update
1272 $ hg -q clone a fsmonitor-update
1273 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") (?)
1273 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor") (?)
1274 $ cd fsmonitor-update
1274 $ cd fsmonitor-update
1275 $ hg up acb14030fe0a
1275 $ hg up acb14030fe0a
1276 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
1276 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
1277 (leaving bookmark @)
1277 (leaving bookmark @)
1278 $ hg up cf0fe1914066
1278 $ hg up cf0fe1914066
1279 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1279 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1280
1280
1281 `hg update` from null revision also prints
1281 `hg update` from null revision also prints
1282
1282
1283 $ hg up null
1283 $ hg up null
1284 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1284 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1285
1285
1286 #if linuxormacos no-fsmonitor
1286 #if linuxormacos no-fsmonitor
1287 $ hg up cf0fe1914066
1287 $ hg up cf0fe1914066
1288 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor")
1288 (warning: large working directory being used without fsmonitor enabled; enable fsmonitor to improve performance; see "hg help -e fsmonitor")
1289 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1289 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1290 #else
1290 #else
1291 $ hg up cf0fe1914066
1291 $ hg up cf0fe1914066
1292 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1292 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1293 #endif
1293 #endif
1294
1294
1295 $ cd ..
1295 $ cd ..
1296
1296
@@ -1,630 +1,630 b''
1 $ cat >> $HGRCPATH <<EOF
1 $ cat >> $HGRCPATH <<EOF
2 > [extensions]
2 > [extensions]
3 > convert=
3 > convert=
4 > [convert]
4 > [convert]
5 > hg.saverev=False
5 > hg.saverev=False
6 > EOF
6 > EOF
7 $ hg help convert
7 $ hg help convert
8 hg convert [OPTION]... SOURCE [DEST [REVMAP]]
8 hg convert [OPTION]... SOURCE [DEST [REVMAP]]
9
9
10 convert a foreign SCM repository to a Mercurial one.
10 convert a foreign SCM repository to a Mercurial one.
11
11
12 Accepted source formats [identifiers]:
12 Accepted source formats [identifiers]:
13
13
14 - Mercurial [hg]
14 - Mercurial [hg]
15 - CVS [cvs]
15 - CVS [cvs]
16 - Darcs [darcs]
16 - Darcs [darcs]
17 - git [git]
17 - git [git]
18 - Subversion [svn]
18 - Subversion [svn]
19 - Monotone [mtn]
19 - Monotone [mtn]
20 - GNU Arch [gnuarch]
20 - GNU Arch [gnuarch]
21 - Bazaar [bzr]
21 - Bazaar [bzr]
22 - Perforce [p4]
22 - Perforce [p4]
23
23
24 Accepted destination formats [identifiers]:
24 Accepted destination formats [identifiers]:
25
25
26 - Mercurial [hg]
26 - Mercurial [hg]
27 - Subversion [svn] (history on branches is not preserved)
27 - Subversion [svn] (history on branches is not preserved)
28
28
29 If no revision is given, all revisions will be converted. Otherwise,
29 If no revision is given, all revisions will be converted. Otherwise,
30 convert will only import up to the named revision (given in a format
30 convert will only import up to the named revision (given in a format
31 understood by the source).
31 understood by the source).
32
32
33 If no destination directory name is specified, it defaults to the basename
33 If no destination directory name is specified, it defaults to the basename
34 of the source with "-hg" appended. If the destination repository doesn't
34 of the source with "-hg" appended. If the destination repository doesn't
35 exist, it will be created.
35 exist, it will be created.
36
36
37 By default, all sources except Mercurial will use --branchsort. Mercurial
37 By default, all sources except Mercurial will use --branchsort. Mercurial
38 uses --sourcesort to preserve original revision numbers order. Sort modes
38 uses --sourcesort to preserve original revision numbers order. Sort modes
39 have the following effects:
39 have the following effects:
40
40
41 --branchsort convert from parent to child revision when possible, which
41 --branchsort convert from parent to child revision when possible, which
42 means branches are usually converted one after the other.
42 means branches are usually converted one after the other.
43 It generates more compact repositories.
43 It generates more compact repositories.
44 --datesort sort revisions by date. Converted repositories have good-
44 --datesort sort revisions by date. Converted repositories have good-
45 looking changelogs but are often an order of magnitude
45 looking changelogs but are often an order of magnitude
46 larger than the same ones generated by --branchsort.
46 larger than the same ones generated by --branchsort.
47 --sourcesort try to preserve source revisions order, only supported by
47 --sourcesort try to preserve source revisions order, only supported by
48 Mercurial sources.
48 Mercurial sources.
49 --closesort try to move closed revisions as close as possible to parent
49 --closesort try to move closed revisions as close as possible to parent
50 branches, only supported by Mercurial sources.
50 branches, only supported by Mercurial sources.
51
51
52 If "REVMAP" isn't given, it will be put in a default location
52 If "REVMAP" isn't given, it will be put in a default location
53 ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that
53 ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that
54 maps each source commit ID to the destination ID for that revision, like
54 maps each source commit ID to the destination ID for that revision, like
55 so:
55 so:
56
56
57 <source ID> <destination ID>
57 <source ID> <destination ID>
58
58
59 If the file doesn't exist, it's automatically created. It's updated on
59 If the file doesn't exist, it's automatically created. It's updated on
60 each commit copied, so 'hg convert' can be interrupted and can be run
60 each commit copied, so 'hg convert' can be interrupted and can be run
61 repeatedly to copy new commits.
61 repeatedly to copy new commits.
62
62
63 The authormap is a simple text file that maps each source commit author to
63 The authormap is a simple text file that maps each source commit author to
64 a destination commit author. It is handy for source SCMs that use unix
64 a destination commit author. It is handy for source SCMs that use unix
65 logins to identify authors (e.g.: CVS). One line per author mapping and
65 logins to identify authors (e.g.: CVS). One line per author mapping and
66 the line format is:
66 the line format is:
67
67
68 source author = destination author
68 source author = destination author
69
69
70 Empty lines and lines starting with a "#" are ignored.
70 Empty lines and lines starting with a "#" are ignored.
71
71
72 The filemap is a file that allows filtering and remapping of files and
72 The filemap is a file that allows filtering and remapping of files and
73 directories. Each line can contain one of the following directives:
73 directories. Each line can contain one of the following directives:
74
74
75 include path/to/file-or-dir
75 include path/to/file-or-dir
76
76
77 exclude path/to/file-or-dir
77 exclude path/to/file-or-dir
78
78
79 rename path/to/source path/to/destination
79 rename path/to/source path/to/destination
80
80
81 Comment lines start with "#". A specified path matches if it equals the
81 Comment lines start with "#". A specified path matches if it equals the
82 full relative name of a file or one of its parent directories. The
82 full relative name of a file or one of its parent directories. The
83 "include" or "exclude" directive with the longest matching path applies,
83 "include" or "exclude" directive with the longest matching path applies,
84 so line order does not matter.
84 so line order does not matter.
85
85
86 The "include" directive causes a file, or all files under a directory, to
86 The "include" directive causes a file, or all files under a directory, to
87 be included in the destination repository. The default if there are no
87 be included in the destination repository. The default if there are no
88 "include" statements is to include everything. If there are any "include"
88 "include" statements is to include everything. If there are any "include"
89 statements, nothing else is included. The "exclude" directive causes files
89 statements, nothing else is included. The "exclude" directive causes files
90 or directories to be omitted. The "rename" directive renames a file or
90 or directories to be omitted. The "rename" directive renames a file or
91 directory if it is converted. To rename from a subdirectory into the root
91 directory if it is converted. To rename from a subdirectory into the root
92 of the repository, use "." as the path to rename to.
92 of the repository, use "." as the path to rename to.
93
93
94 "--full" will make sure the converted changesets contain exactly the right
94 "--full" will make sure the converted changesets contain exactly the right
95 files with the right content. It will make a full conversion of all files,
95 files with the right content. It will make a full conversion of all files,
96 not just the ones that have changed. Files that already are correct will
96 not just the ones that have changed. Files that already are correct will
97 not be changed. This can be used to apply filemap changes when converting
97 not be changed. This can be used to apply filemap changes when converting
98 incrementally. This is currently only supported for Mercurial and
98 incrementally. This is currently only supported for Mercurial and
99 Subversion.
99 Subversion.
100
100
101 The splicemap is a file that allows insertion of synthetic history,
101 The splicemap is a file that allows insertion of synthetic history,
102 letting you specify the parents of a revision. This is useful if you want
102 letting you specify the parents of a revision. This is useful if you want
103 to e.g. give a Subversion merge two parents, or graft two disconnected
103 to e.g. give a Subversion merge two parents, or graft two disconnected
104 series of history together. Each entry contains a key, followed by a
104 series of history together. Each entry contains a key, followed by a
105 space, followed by one or two comma-separated values:
105 space, followed by one or two comma-separated values:
106
106
107 key parent1, parent2
107 key parent1, parent2
108
108
109 The key is the revision ID in the source revision control system whose
109 The key is the revision ID in the source revision control system whose
110 parents should be modified (same format as a key in .hg/shamap). The
110 parents should be modified (same format as a key in .hg/shamap). The
111 values are the revision IDs (in either the source or destination revision
111 values are the revision IDs (in either the source or destination revision
112 control system) that should be used as the new parents for that node. For
112 control system) that should be used as the new parents for that node. For
113 example, if you have merged "release-1.0" into "trunk", then you should
113 example, if you have merged "release-1.0" into "trunk", then you should
114 specify the revision on "trunk" as the first parent and the one on the
114 specify the revision on "trunk" as the first parent and the one on the
115 "release-1.0" branch as the second.
115 "release-1.0" branch as the second.
116
116
117 The branchmap is a file that allows you to rename a branch when it is
117 The branchmap is a file that allows you to rename a branch when it is
118 being brought in from whatever external repository. When used in
118 being brought in from whatever external repository. When used in
119 conjunction with a splicemap, it allows for a powerful combination to help
119 conjunction with a splicemap, it allows for a powerful combination to help
120 fix even the most badly mismanaged repositories and turn them into nicely
120 fix even the most badly mismanaged repositories and turn them into nicely
121 structured Mercurial repositories. The branchmap contains lines of the
121 structured Mercurial repositories. The branchmap contains lines of the
122 form:
122 form:
123
123
124 original_branch_name new_branch_name
124 original_branch_name new_branch_name
125
125
126 where "original_branch_name" is the name of the branch in the source
126 where "original_branch_name" is the name of the branch in the source
127 repository, and "new_branch_name" is the name of the branch is the
127 repository, and "new_branch_name" is the name of the branch is the
128 destination repository. No whitespace is allowed in the new branch name.
128 destination repository. No whitespace is allowed in the new branch name.
129 This can be used to (for instance) move code in one repository from
129 This can be used to (for instance) move code in one repository from
130 "default" to a named branch.
130 "default" to a named branch.
131
131
132 Mercurial Source
132 Mercurial Source
133 ################
133 ################
134
134
135 The Mercurial source recognizes the following configuration options, which
135 The Mercurial source recognizes the following configuration options, which
136 you can set on the command line with "--config":
136 you can set on the command line with "--config":
137
137
138 convert.hg.ignoreerrors
138 convert.hg.ignoreerrors
139 ignore integrity errors when reading. Use it to fix
139 ignore integrity errors when reading. Use it to fix
140 Mercurial repositories with missing revlogs, by converting
140 Mercurial repositories with missing revlogs, by converting
141 from and to Mercurial. Default is False.
141 from and to Mercurial. Default is False.
142 convert.hg.saverev
142 convert.hg.saverev
143 store original revision ID in changeset (forces target IDs
143 store original revision ID in changeset (forces target IDs
144 to change). It takes a boolean argument and defaults to
144 to change). It takes a boolean argument and defaults to
145 False.
145 False.
146 convert.hg.startrev
146 convert.hg.startrev
147 specify the initial Mercurial revision. The default is 0.
147 specify the initial Mercurial revision. The default is 0.
148 convert.hg.revs
148 convert.hg.revs
149 revset specifying the source revisions to convert.
149 revset specifying the source revisions to convert.
150
150
151 Bazaar Source
151 Bazaar Source
152 #############
152 #############
153
153
154 The following options can be used with "--config":
154 The following options can be used with "--config":
155
155
156 convert.bzr.saverev
156 convert.bzr.saverev
157 whether to store the original Bazaar commit ID in the
157 whether to store the original Bazaar commit ID in the
158 metadata of the destination commit. The default is True.
158 metadata of the destination commit. The default is True.
159
159
160 CVS Source
160 CVS Source
161 ##########
161 ##########
162
162
163 CVS source will use a sandbox (i.e. a checked-out copy) from CVS to
163 CVS source will use a sandbox (i.e. a checked-out copy) from CVS to
164 indicate the starting point of what will be converted. Direct access to
164 indicate the starting point of what will be converted. Direct access to
165 the repository files is not needed, unless of course the repository is
165 the repository files is not needed, unless of course the repository is
166 ":local:". The conversion uses the top level directory in the sandbox to
166 ":local:". The conversion uses the top level directory in the sandbox to
167 find the CVS repository, and then uses CVS rlog commands to find files to
167 find the CVS repository, and then uses CVS rlog commands to find files to
168 convert. This means that unless a filemap is given, all files under the
168 convert. This means that unless a filemap is given, all files under the
169 starting directory will be converted, and that any directory
169 starting directory will be converted, and that any directory
170 reorganization in the CVS sandbox is ignored.
170 reorganization in the CVS sandbox is ignored.
171
171
172 The following options can be used with "--config":
172 The following options can be used with "--config":
173
173
174 convert.cvsps.cache
174 convert.cvsps.cache
175 Set to False to disable remote log caching, for testing and
175 Set to False to disable remote log caching, for testing and
176 debugging purposes. Default is True.
176 debugging purposes. Default is True.
177 convert.cvsps.fuzz
177 convert.cvsps.fuzz
178 Specify the maximum time (in seconds) that is allowed
178 Specify the maximum time (in seconds) that is allowed
179 between commits with identical user and log message in a
179 between commits with identical user and log message in a
180 single changeset. When very large files were checked in as
180 single changeset. When very large files were checked in as
181 part of a changeset then the default may not be long enough.
181 part of a changeset then the default may not be long enough.
182 The default is 60.
182 The default is 60.
183 convert.cvsps.logencoding
183 convert.cvsps.logencoding
184 Specify encoding name to be used for transcoding CVS log
184 Specify encoding name to be used for transcoding CVS log
185 messages. Multiple encoding names can be specified as a list
185 messages. Multiple encoding names can be specified as a list
186 (see 'hg help config.Syntax'), but only the first acceptable
186 (see 'hg help config.Syntax'), but only the first acceptable
187 encoding in the list is used per CVS log entries. This
187 encoding in the list is used per CVS log entries. This
188 transcoding is executed before cvslog hook below.
188 transcoding is executed before cvslog hook below.
189 convert.cvsps.mergeto
189 convert.cvsps.mergeto
190 Specify a regular expression to which commit log messages
190 Specify a regular expression to which commit log messages
191 are matched. If a match occurs, then the conversion process
191 are matched. If a match occurs, then the conversion process
192 will insert a dummy revision merging the branch on which
192 will insert a dummy revision merging the branch on which
193 this log message occurs to the branch indicated in the
193 this log message occurs to the branch indicated in the
194 regex. Default is "{{mergetobranch ([-\w]+)}}"
194 regex. Default is "{{mergetobranch ([-\w]+)}}"
195 convert.cvsps.mergefrom
195 convert.cvsps.mergefrom
196 Specify a regular expression to which commit log messages
196 Specify a regular expression to which commit log messages
197 are matched. If a match occurs, then the conversion process
197 are matched. If a match occurs, then the conversion process
198 will add the most recent revision on the branch indicated in
198 will add the most recent revision on the branch indicated in
199 the regex as the second parent of the changeset. Default is
199 the regex as the second parent of the changeset. Default is
200 "{{mergefrombranch ([-\w]+)}}"
200 "{{mergefrombranch ([-\w]+)}}"
201 convert.localtimezone
201 convert.localtimezone
202 use local time (as determined by the TZ environment
202 use local time (as determined by the TZ environment
203 variable) for changeset date/times. The default is False
203 variable) for changeset date/times. The default is False
204 (use UTC).
204 (use UTC).
205 hooks.cvslog Specify a Python function to be called at the end of
205 hooks.cvslog Specify a Python function to be called at the end of
206 gathering the CVS log. The function is passed a list with
206 gathering the CVS log. The function is passed a list with
207 the log entries, and can modify the entries in-place, or add
207 the log entries, and can modify the entries in-place, or add
208 or delete them.
208 or delete them.
209 hooks.cvschangesets
209 hooks.cvschangesets
210 Specify a Python function to be called after the changesets
210 Specify a Python function to be called after the changesets
211 are calculated from the CVS log. The function is passed a
211 are calculated from the CVS log. The function is passed a
212 list with the changeset entries, and can modify the
212 list with the changeset entries, and can modify the
213 changesets in-place, or add or delete them.
213 changesets in-place, or add or delete them.
214
214
215 An additional "debugcvsps" Mercurial command allows the builtin changeset
215 An additional "debugcvsps" Mercurial command allows the builtin changeset
216 merging code to be run without doing a conversion. Its parameters and
216 merging code to be run without doing a conversion. Its parameters and
217 output are similar to that of cvsps 2.1. Please see the command help for
217 output are similar to that of cvsps 2.1. Please see the command help for
218 more details.
218 more details.
219
219
220 Subversion Source
220 Subversion Source
221 #################
221 #################
222
222
223 Subversion source detects classical trunk/branches/tags layouts. By
223 Subversion source detects classical trunk/branches/tags layouts. By
224 default, the supplied "svn://repo/path/" source URL is converted as a
224 default, the supplied "svn://repo/path/" source URL is converted as a
225 single branch. If "svn://repo/path/trunk" exists it replaces the default
225 single branch. If "svn://repo/path/trunk" exists it replaces the default
226 branch. If "svn://repo/path/branches" exists, its subdirectories are
226 branch. If "svn://repo/path/branches" exists, its subdirectories are
227 listed as possible branches. If "svn://repo/path/tags" exists, it is
227 listed as possible branches. If "svn://repo/path/tags" exists, it is
228 looked for tags referencing converted branches. Default "trunk",
228 looked for tags referencing converted branches. Default "trunk",
229 "branches" and "tags" values can be overridden with following options. Set
229 "branches" and "tags" values can be overridden with following options. Set
230 them to paths relative to the source URL, or leave them blank to disable
230 them to paths relative to the source URL, or leave them blank to disable
231 auto detection.
231 auto detection.
232
232
233 The following options can be set with "--config":
233 The following options can be set with "--config":
234
234
235 convert.svn.branches
235 convert.svn.branches
236 specify the directory containing branches. The default is
236 specify the directory containing branches. The default is
237 "branches".
237 "branches".
238 convert.svn.tags
238 convert.svn.tags
239 specify the directory containing tags. The default is
239 specify the directory containing tags. The default is
240 "tags".
240 "tags".
241 convert.svn.trunk
241 convert.svn.trunk
242 specify the name of the trunk branch. The default is
242 specify the name of the trunk branch. The default is
243 "trunk".
243 "trunk".
244 convert.localtimezone
244 convert.localtimezone
245 use local time (as determined by the TZ environment
245 use local time (as determined by the TZ environment
246 variable) for changeset date/times. The default is False
246 variable) for changeset date/times. The default is False
247 (use UTC).
247 (use UTC).
248
248
249 Source history can be retrieved starting at a specific revision, instead
249 Source history can be retrieved starting at a specific revision, instead
250 of being integrally converted. Only single branch conversions are
250 of being integrally converted. Only single branch conversions are
251 supported.
251 supported.
252
252
253 convert.svn.startrev
253 convert.svn.startrev
254 specify start Subversion revision number. The default is 0.
254 specify start Subversion revision number. The default is 0.
255
255
256 Git Source
256 Git Source
257 ##########
257 ##########
258
258
259 The Git importer converts commits from all reachable branches (refs in
259 The Git importer converts commits from all reachable branches (refs in
260 refs/heads) and remotes (refs in refs/remotes) to Mercurial. Branches are
260 refs/heads) and remotes (refs in refs/remotes) to Mercurial. Branches are
261 converted to bookmarks with the same name, with the leading 'refs/heads'
261 converted to bookmarks with the same name, with the leading 'refs/heads'
262 stripped. Git submodules are converted to Git subrepos in Mercurial.
262 stripped. Git submodules are converted to Git subrepos in Mercurial.
263
263
264 The following options can be set with "--config":
264 The following options can be set with "--config":
265
265
266 convert.git.similarity
266 convert.git.similarity
267 specify how similar files modified in a commit must be to be
267 specify how similar files modified in a commit must be to be
268 imported as renames or copies, as a percentage between "0"
268 imported as renames or copies, as a percentage between "0"
269 (disabled) and "100" (files must be identical). For example,
269 (disabled) and "100" (files must be identical). For example,
270 "90" means that a delete/add pair will be imported as a
270 "90" means that a delete/add pair will be imported as a
271 rename if more than 90% of the file hasn't changed. The
271 rename if more than 90% of the file hasn't changed. The
272 default is "50".
272 default is "50".
273 convert.git.findcopiesharder
273 convert.git.findcopiesharder
274 while detecting copies, look at all files in the working
274 while detecting copies, look at all files in the working
275 copy instead of just changed ones. This is very expensive
275 copy instead of just changed ones. This is very expensive
276 for large projects, and is only effective when
276 for large projects, and is only effective when
277 "convert.git.similarity" is greater than 0. The default is
277 "convert.git.similarity" is greater than 0. The default is
278 False.
278 False.
279 convert.git.renamelimit
279 convert.git.renamelimit
280 perform rename and copy detection up to this many changed
280 perform rename and copy detection up to this many changed
281 files in a commit. Increasing this will make rename and copy
281 files in a commit. Increasing this will make rename and copy
282 detection more accurate but will significantly slow down
282 detection more accurate but will significantly slow down
283 computation on large projects. The option is only relevant
283 computation on large projects. The option is only relevant
284 if "convert.git.similarity" is greater than 0. The default
284 if "convert.git.similarity" is greater than 0. The default
285 is "400".
285 is "400".
286 convert.git.committeractions
286 convert.git.committeractions
287 list of actions to take when processing author and committer
287 list of actions to take when processing author and committer
288 values.
288 values.
289
289
290 Git commits have separate author (who wrote the commit) and committer
290 Git commits have separate author (who wrote the commit) and committer
291 (who applied the commit) fields. Not all destinations support separate
291 (who applied the commit) fields. Not all destinations support separate
292 author and committer fields (including Mercurial). This config option
292 author and committer fields (including Mercurial). This config option
293 controls what to do with these author and committer fields during
293 controls what to do with these author and committer fields during
294 conversion.
294 conversion.
295
295
296 A value of "messagedifferent" will append a "committer: ..." line to
296 A value of "messagedifferent" will append a "committer: ..." line to
297 the commit message if the Git committer is different from the author.
297 the commit message if the Git committer is different from the author.
298 The prefix of that line can be specified using the syntax
298 The prefix of that line can be specified using the syntax
299 "messagedifferent=<prefix>". e.g. "messagedifferent=git-committer:".
299 "messagedifferent=<prefix>". e.g. "messagedifferent=git-committer:".
300 When a prefix is specified, a space will always be inserted between
300 When a prefix is specified, a space will always be inserted between
301 the prefix and the value.
301 the prefix and the value.
302
302
303 "messagealways" behaves like "messagedifferent" except it will always
303 "messagealways" behaves like "messagedifferent" except it will always
304 result in a "committer: ..." line being appended to the commit
304 result in a "committer: ..." line being appended to the commit
305 message. This value is mutually exclusive with "messagedifferent".
305 message. This value is mutually exclusive with "messagedifferent".
306
306
307 "dropcommitter" will remove references to the committer. Only
307 "dropcommitter" will remove references to the committer. Only
308 references to the author will remain. Actions that add references to
308 references to the author will remain. Actions that add references to
309 the committer will have no effect when this is set.
309 the committer will have no effect when this is set.
310
310
311 "replaceauthor" will replace the value of the author field with the
311 "replaceauthor" will replace the value of the author field with the
312 committer. Other actions that add references to the committer will
312 committer. Other actions that add references to the committer will
313 still take effect when this is set.
313 still take effect when this is set.
314
314
315 The default is "messagedifferent".
315 The default is "messagedifferent".
316
316
317 convert.git.extrakeys
317 convert.git.extrakeys
318 list of extra keys from commit metadata to copy to the
318 list of extra keys from commit metadata to copy to the
319 destination. Some Git repositories store extra metadata in
319 destination. Some Git repositories store extra metadata in
320 commits. By default, this non-default metadata will be lost
320 commits. By default, this non-default metadata will be lost
321 during conversion. Setting this config option can retain
321 during conversion. Setting this config option can retain
322 that metadata. Some built-in keys such as "parent" and
322 that metadata. Some built-in keys such as "parent" and
323 "branch" are not allowed to be copied.
323 "branch" are not allowed to be copied.
324 convert.git.remoteprefix
324 convert.git.remoteprefix
325 remote refs are converted as bookmarks with
325 remote refs are converted as bookmarks with
326 "convert.git.remoteprefix" as a prefix followed by a /. The
326 "convert.git.remoteprefix" as a prefix followed by a /. The
327 default is 'remote'.
327 default is 'remote'.
328 convert.git.saverev
328 convert.git.saverev
329 whether to store the original Git commit ID in the metadata
329 whether to store the original Git commit ID in the metadata
330 of the destination commit. The default is True.
330 of the destination commit. The default is True.
331 convert.git.skipsubmodules
331 convert.git.skipsubmodules
332 does not convert root level .gitmodules files or files with
332 does not convert root level .gitmodules files or files with
333 160000 mode indicating a submodule. Default is False.
333 160000 mode indicating a submodule. Default is False.
334
334
335 Perforce Source
335 Perforce Source
336 ###############
336 ###############
337
337
338 The Perforce (P4) importer can be given a p4 depot path or a client
338 The Perforce (P4) importer can be given a p4 depot path or a client
339 specification as source. It will convert all files in the source to a flat
339 specification as source. It will convert all files in the source to a flat
340 Mercurial repository, ignoring labels, branches and integrations. Note
340 Mercurial repository, ignoring labels, branches and integrations. Note
341 that when a depot path is given you then usually should specify a target
341 that when a depot path is given you then usually should specify a target
342 directory, because otherwise the target may be named "...-hg".
342 directory, because otherwise the target may be named "...-hg".
343
343
344 The following options can be set with "--config":
344 The following options can be set with "--config":
345
345
346 convert.p4.encoding
346 convert.p4.encoding
347 specify the encoding to use when decoding standard output of
347 specify the encoding to use when decoding standard output of
348 the Perforce command line tool. The default is default
348 the Perforce command line tool. The default is default
349 system encoding.
349 system encoding.
350 convert.p4.startrev
350 convert.p4.startrev
351 specify initial Perforce revision (a Perforce changelist
351 specify initial Perforce revision (a Perforce changelist
352 number).
352 number).
353
353
354 Mercurial Destination
354 Mercurial Destination
355 #####################
355 #####################
356
356
357 The Mercurial destination will recognize Mercurial subrepositories in the
357 The Mercurial destination will recognize Mercurial subrepositories in the
358 destination directory, and update the .hgsubstate file automatically if
358 destination directory, and update the .hgsubstate file automatically if
359 the destination subrepositories contain the <dest>/<sub>/.hg/shamap file.
359 the destination subrepositories contain the <dest>/<sub>/.hg/shamap file.
360 Converting a repository with subrepositories requires converting a single
360 Converting a repository with subrepositories requires converting a single
361 repository at a time, from the bottom up.
361 repository at a time, from the bottom up.
362
362
363 The following options are supported:
363 The following options are supported:
364
364
365 convert.hg.clonebranches
365 convert.hg.clonebranches
366 dispatch source branches in separate clones. The default is
366 dispatch source branches in separate clones. The default is
367 False.
367 False.
368 convert.hg.tagsbranch
368 convert.hg.tagsbranch
369 branch name for tag revisions, defaults to "default".
369 branch name for tag revisions, defaults to "default".
370 convert.hg.usebranchnames
370 convert.hg.usebranchnames
371 preserve branch names. The default is True.
371 preserve branch names. The default is True.
372 convert.hg.sourcename
372 convert.hg.sourcename
373 records the given string as a 'convert_source' extra value
373 records the given string as a 'convert_source' extra value
374 on each commit made in the target repository. The default is
374 on each commit made in the target repository. The default is
375 None.
375 None.
376
376
377 All Destinations
377 All Destinations
378 ################
378 ################
379
379
380 All destination types accept the following options:
380 All destination types accept the following options:
381
381
382 convert.skiptags
382 convert.skiptags
383 does not convert tags from the source repo to the target
383 does not convert tags from the source repo to the target
384 repo. The default is False.
384 repo. The default is False.
385
385
386 options ([+] can be repeated):
386 options ([+] can be repeated):
387
387
388 -s --source-type TYPE source repository type
388 -s --source-type TYPE source repository type
389 -d --dest-type TYPE destination repository type
389 -d --dest-type TYPE destination repository type
390 -r --rev REV [+] import up to source revision REV
390 -r --rev REV [+] import up to source revision REV
391 -A --authormap FILE remap usernames using this file
391 -A --authormap FILE remap usernames using this file
392 --filemap FILE remap file names using contents of file
392 --filemap FILE remap file names using contents of file
393 --full apply filemap changes by converting all files again
393 --full apply filemap changes by converting all files again
394 --splicemap FILE splice synthesized history into place
394 --splicemap FILE splice synthesized history into place
395 --branchmap FILE change branch names while converting
395 --branchmap FILE change branch names while converting
396 --branchsort try to sort changesets by branches
396 --branchsort try to sort changesets by branches
397 --datesort try to sort changesets by date
397 --datesort try to sort changesets by date
398 --sourcesort preserve source changesets order
398 --sourcesort preserve source changesets order
399 --closesort try to reorder closed revisions
399 --closesort try to reorder closed revisions
400
400
401 (some details hidden, use --verbose to show complete help)
401 (some details hidden, use --verbose to show complete help)
402 $ hg init a
402 $ hg init a
403 $ cd a
403 $ cd a
404 $ echo a > a
404 $ echo a > a
405 $ hg ci -d'0 0' -Ama
405 $ hg ci -d'0 0' -Ama
406 adding a
406 adding a
407 $ hg cp a b
407 $ hg cp a b
408 $ hg ci -d'1 0' -mb
408 $ hg ci -d'1 0' -mb
409 $ hg rm a
409 $ hg rm a
410 $ hg ci -d'2 0' -mc
410 $ hg ci -d'2 0' -mc
411 $ hg mv b a
411 $ hg mv b a
412 $ hg ci -d'3 0' -md
412 $ hg ci -d'3 0' -md
413 $ echo a >> a
413 $ echo a >> a
414 $ hg ci -d'4 0' -me
414 $ hg ci -d'4 0' -me
415 $ cd ..
415 $ cd ..
416 $ hg convert a 2>&1 | grep -v 'subversion python bindings could not be loaded'
416 $ hg convert a 2>&1 | grep -v 'subversion python bindings could not be loaded'
417 assuming destination a-hg
417 assuming destination a-hg
418 initializing destination a-hg repository
418 initializing destination a-hg repository
419 scanning source...
419 scanning source...
420 sorting...
420 sorting...
421 converting...
421 converting...
422 4 a
422 4 a
423 3 b
423 3 b
424 2 c
424 2 c
425 1 d
425 1 d
426 0 e
426 0 e
427 $ hg --cwd a-hg pull ../a
427 $ hg --cwd a-hg pull ../a
428 pulling from ../a
428 pulling from ../a
429 searching for changes
429 searching for changes
430 no changes found
430 no changes found
431 5 local changesets published
431 5 local changesets published
432
432
433 conversion to existing file should fail
433 conversion to existing file should fail
434
434
435 $ touch bogusfile
435 $ touch bogusfile
436 $ hg convert a bogusfile
436 $ hg convert a bogusfile
437 initializing destination bogusfile repository
437 initializing destination bogusfile repository
438 abort: cannot create new bundle repository
438 abort: cannot create new bundle repository
439 [255]
439 [255]
440
440
441 #if unix-permissions no-root
441 #if unix-permissions no-root
442
442
443 conversion to dir without permissions should fail
443 conversion to dir without permissions should fail
444
444
445 $ mkdir bogusdir
445 $ mkdir bogusdir
446 $ chmod 000 bogusdir
446 $ chmod 000 bogusdir
447
447
448 $ hg convert a bogusdir
448 $ hg convert a bogusdir
449 abort: Permission denied: 'bogusdir'
449 abort: Permission denied: *bogusdir* (glob)
450 [255]
450 [255]
451
451
452 user permissions should succeed
452 user permissions should succeed
453
453
454 $ chmod 700 bogusdir
454 $ chmod 700 bogusdir
455 $ hg convert a bogusdir
455 $ hg convert a bogusdir
456 initializing destination bogusdir repository
456 initializing destination bogusdir repository
457 scanning source...
457 scanning source...
458 sorting...
458 sorting...
459 converting...
459 converting...
460 4 a
460 4 a
461 3 b
461 3 b
462 2 c
462 2 c
463 1 d
463 1 d
464 0 e
464 0 e
465
465
466 #endif
466 #endif
467
467
468 test pre and post conversion actions
468 test pre and post conversion actions
469
469
470 $ echo 'include b' > filemap
470 $ echo 'include b' > filemap
471 $ hg convert --debug --filemap filemap a partialb | \
471 $ hg convert --debug --filemap filemap a partialb | \
472 > grep 'run hg'
472 > grep 'run hg'
473 run hg source pre-conversion action
473 run hg source pre-conversion action
474 run hg sink pre-conversion action
474 run hg sink pre-conversion action
475 run hg sink post-conversion action
475 run hg sink post-conversion action
476 run hg source post-conversion action
476 run hg source post-conversion action
477
477
478 converting empty dir should fail "nicely
478 converting empty dir should fail "nicely
479
479
480 $ mkdir emptydir
480 $ mkdir emptydir
481
481
482 override $PATH to ensure p4 not visible; use $PYTHON in case we're
482 override $PATH to ensure p4 not visible; use $PYTHON in case we're
483 running from a devel copy, not a temp installation
483 running from a devel copy, not a temp installation
484
484
485 $ PATH="$BINDIR" "$PYTHON" "$BINDIR"/hg convert emptydir
485 $ PATH="$BINDIR" "$PYTHON" "$BINDIR"/hg convert emptydir
486 assuming destination emptydir-hg
486 assuming destination emptydir-hg
487 initializing destination emptydir-hg repository
487 initializing destination emptydir-hg repository
488 emptydir does not look like a CVS checkout
488 emptydir does not look like a CVS checkout
489 $TESTTMP/emptydir does not look like a Git repository
489 $TESTTMP/emptydir does not look like a Git repository
490 emptydir does not look like a Subversion repository
490 emptydir does not look like a Subversion repository
491 emptydir is not a local Mercurial repository
491 emptydir is not a local Mercurial repository
492 emptydir does not look like a darcs repository
492 emptydir does not look like a darcs repository
493 emptydir does not look like a monotone repository
493 emptydir does not look like a monotone repository
494 emptydir does not look like a GNU Arch repository
494 emptydir does not look like a GNU Arch repository
495 emptydir does not look like a Bazaar repository
495 emptydir does not look like a Bazaar repository
496 cannot find required "p4" tool
496 cannot find required "p4" tool
497 abort: emptydir: missing or unsupported repository
497 abort: emptydir: missing or unsupported repository
498 [255]
498 [255]
499
499
500 convert with imaginary source type
500 convert with imaginary source type
501
501
502 $ hg convert --source-type foo a a-foo
502 $ hg convert --source-type foo a a-foo
503 initializing destination a-foo repository
503 initializing destination a-foo repository
504 abort: foo: invalid source repository type
504 abort: foo: invalid source repository type
505 [255]
505 [255]
506
506
507 convert with imaginary sink type
507 convert with imaginary sink type
508
508
509 $ hg convert --dest-type foo a a-foo
509 $ hg convert --dest-type foo a a-foo
510 abort: foo: invalid destination repository type
510 abort: foo: invalid destination repository type
511 [255]
511 [255]
512
512
513 testing: convert must not produce duplicate entries in fncache
513 testing: convert must not produce duplicate entries in fncache
514
514
515 $ hg convert a b
515 $ hg convert a b
516 initializing destination b repository
516 initializing destination b repository
517 scanning source...
517 scanning source...
518 sorting...
518 sorting...
519 converting...
519 converting...
520 4 a
520 4 a
521 3 b
521 3 b
522 2 c
522 2 c
523 1 d
523 1 d
524 0 e
524 0 e
525
525
526 contents of fncache file:
526 contents of fncache file:
527
527
528 #if repofncache
528 #if repofncache
529 $ cat b/.hg/store/fncache | sort
529 $ cat b/.hg/store/fncache | sort
530 data/a.i (reporevlogstore !)
530 data/a.i (reporevlogstore !)
531 data/b.i (reporevlogstore !)
531 data/b.i (reporevlogstore !)
532 #endif
532 #endif
533
533
534 test bogus URL
534 test bogus URL
535
535
536 #if no-msys
536 #if no-msys
537 $ hg convert -q bzr+ssh://foobar@selenic.com/baz baz
537 $ hg convert -q bzr+ssh://foobar@selenic.com/baz baz
538 abort: bzr+ssh://foobar@selenic.com/baz: missing or unsupported repository
538 abort: bzr+ssh://foobar@selenic.com/baz: missing or unsupported repository
539 [255]
539 [255]
540 #endif
540 #endif
541
541
542 test revset converted() lookup
542 test revset converted() lookup
543
543
544 $ hg --config convert.hg.saverev=True convert a c
544 $ hg --config convert.hg.saverev=True convert a c
545 initializing destination c repository
545 initializing destination c repository
546 scanning source...
546 scanning source...
547 sorting...
547 sorting...
548 converting...
548 converting...
549 4 a
549 4 a
550 3 b
550 3 b
551 2 c
551 2 c
552 1 d
552 1 d
553 0 e
553 0 e
554 $ echo f > c/f
554 $ echo f > c/f
555 $ hg -R c ci -d'0 0' -Amf
555 $ hg -R c ci -d'0 0' -Amf
556 adding f
556 adding f
557 created new head
557 created new head
558 $ hg -R c log -r "converted(09d945a62ce6)"
558 $ hg -R c log -r "converted(09d945a62ce6)"
559 changeset: 1:98c3dd46a874
559 changeset: 1:98c3dd46a874
560 user: test
560 user: test
561 date: Thu Jan 01 00:00:01 1970 +0000
561 date: Thu Jan 01 00:00:01 1970 +0000
562 summary: b
562 summary: b
563
563
564 $ hg -R c log -r "converted()"
564 $ hg -R c log -r "converted()"
565 changeset: 0:31ed57b2037c
565 changeset: 0:31ed57b2037c
566 user: test
566 user: test
567 date: Thu Jan 01 00:00:00 1970 +0000
567 date: Thu Jan 01 00:00:00 1970 +0000
568 summary: a
568 summary: a
569
569
570 changeset: 1:98c3dd46a874
570 changeset: 1:98c3dd46a874
571 user: test
571 user: test
572 date: Thu Jan 01 00:00:01 1970 +0000
572 date: Thu Jan 01 00:00:01 1970 +0000
573 summary: b
573 summary: b
574
574
575 changeset: 2:3b9ca06ef716
575 changeset: 2:3b9ca06ef716
576 user: test
576 user: test
577 date: Thu Jan 01 00:00:02 1970 +0000
577 date: Thu Jan 01 00:00:02 1970 +0000
578 summary: c
578 summary: c
579
579
580 changeset: 3:4e0debd37cf2
580 changeset: 3:4e0debd37cf2
581 user: test
581 user: test
582 date: Thu Jan 01 00:00:03 1970 +0000
582 date: Thu Jan 01 00:00:03 1970 +0000
583 summary: d
583 summary: d
584
584
585 changeset: 4:9de3bc9349c5
585 changeset: 4:9de3bc9349c5
586 user: test
586 user: test
587 date: Thu Jan 01 00:00:04 1970 +0000
587 date: Thu Jan 01 00:00:04 1970 +0000
588 summary: e
588 summary: e
589
589
590
590
591 test specifying a sourcename
591 test specifying a sourcename
592 $ echo g > a/g
592 $ echo g > a/g
593 $ hg -R a ci -d'0 0' -Amg
593 $ hg -R a ci -d'0 0' -Amg
594 adding g
594 adding g
595 $ hg --config convert.hg.sourcename=mysource --config convert.hg.saverev=True convert a c
595 $ hg --config convert.hg.sourcename=mysource --config convert.hg.saverev=True convert a c
596 scanning source...
596 scanning source...
597 sorting...
597 sorting...
598 converting...
598 converting...
599 0 g
599 0 g
600 $ hg -R c log -r tip --template '{extras % "{extra}\n"}'
600 $ hg -R c log -r tip --template '{extras % "{extra}\n"}'
601 branch=default
601 branch=default
602 convert_revision=a3bc6100aa8ec03e00aaf271f1f50046fb432072
602 convert_revision=a3bc6100aa8ec03e00aaf271f1f50046fb432072
603 convert_source=mysource
603 convert_source=mysource
604
604
605 $ cat > branchmap.txt << EOF
605 $ cat > branchmap.txt << EOF
606 > old branch new_branch
606 > old branch new_branch
607 > EOF
607 > EOF
608
608
609 $ hg -R a branch -q 'old branch'
609 $ hg -R a branch -q 'old branch'
610 $ echo gg > a/g
610 $ echo gg > a/g
611 $ hg -R a ci -m 'branch name with spaces'
611 $ hg -R a ci -m 'branch name with spaces'
612 $ hg convert --branchmap branchmap.txt a d
612 $ hg convert --branchmap branchmap.txt a d
613 initializing destination d repository
613 initializing destination d repository
614 scanning source...
614 scanning source...
615 sorting...
615 sorting...
616 converting...
616 converting...
617 6 a
617 6 a
618 5 b
618 5 b
619 4 c
619 4 c
620 3 d
620 3 d
621 2 e
621 2 e
622 1 g
622 1 g
623 0 branch name with spaces
623 0 branch name with spaces
624
624
625 $ hg -R a branches
625 $ hg -R a branches
626 old branch 6:a24a66ade009
626 old branch 6:a24a66ade009
627 default 5:a3bc6100aa8e (inactive)
627 default 5:a3bc6100aa8e (inactive)
628 $ hg -R d branches
628 $ hg -R d branches
629 new_branch 6:64ed208b732b
629 new_branch 6:64ed208b732b
630 default 5:a3bc6100aa8e (inactive)
630 default 5:a3bc6100aa8e (inactive)
General Comments 0
You need to be logged in to leave comments. Login now