##// END OF EJS Templates
py3: fix test-hardlinks.t...
Mark Thomas -
r40368:e0dea186 default
parent child Browse files
Show More
@@ -1,635 +1,636 b''
1 1 test-abort-checkin.t
2 2 test-absorb-filefixupstate.py
3 3 test-absorb-phase.t
4 4 test-absorb-rename.t
5 5 test-absorb-strip.t
6 6 test-absorb.t
7 7 test-add.t
8 8 test-addremove-similar.t
9 9 test-addremove.t
10 10 test-alias.t
11 11 test-amend-subrepo.t
12 12 test-amend.t
13 13 test-ancestor.py
14 14 test-annotate.py
15 15 test-annotate.t
16 16 test-archive-symlinks.t
17 17 test-archive.t
18 18 test-atomictempfile.py
19 19 test-audit-path.t
20 20 test-audit-subrepo.t
21 21 test-automv.t
22 22 test-backout.t
23 23 test-backwards-remove.t
24 24 test-bad-extension.t
25 25 test-bad-pull.t
26 26 test-basic.t
27 27 test-bdiff.py
28 28 test-bheads.t
29 29 test-bisect.t
30 30 test-bisect2.t
31 31 test-bisect3.t
32 32 test-blackbox.t
33 33 test-bookmarks-current.t
34 34 test-bookmarks-merge.t
35 35 test-bookmarks-pushpull.t
36 36 test-bookmarks-rebase.t
37 37 test-bookmarks-strip.t
38 38 test-bookmarks.t
39 39 test-branch-change.t
40 40 test-branch-option.t
41 41 test-branch-tag-confict.t
42 42 test-branches.t
43 43 test-bundle-phases.t
44 44 test-bundle-r.t
45 45 test-bundle-type.t
46 46 test-bundle-vs-outgoing.t
47 47 test-bundle.t
48 48 test-bundle2-exchange.t
49 49 test-bundle2-format.t
50 50 test-bundle2-multiple-changegroups.t
51 51 test-bundle2-pushback.t
52 52 test-bundle2-remote-changegroup.t
53 53 test-cache-abuse.t
54 54 test-cappedreader.py
55 55 test-casecollision.t
56 56 test-cat.t
57 57 test-cbor.py
58 58 test-censor.t
59 59 test-changelog-exec.t
60 60 test-check-code.t
61 61 test-check-commit.t
62 62 test-check-config.py
63 63 test-check-config.t
64 64 test-check-execute.t
65 65 test-check-interfaces.py
66 66 test-check-module-imports.t
67 67 test-check-py3-compat.t
68 68 test-check-pyflakes.t
69 69 test-check-pylint.t
70 70 test-check-shbang.t
71 71 test-children.t
72 72 test-churn.t
73 73 test-clone-cgi.t
74 74 test-clone-pull-corruption.t
75 75 test-clone-r.t
76 76 test-clone-uncompressed.t
77 77 test-clone-update-order.t
78 78 test-clone.t
79 79 test-clonebundles.t
80 80 test-close-head.t
81 81 test-commit-amend.t
82 82 test-commit-interactive.t
83 83 test-commit-multiple.t
84 84 test-commit-unresolved.t
85 85 test-commit.t
86 86 test-committer.t
87 87 test-completion.t
88 88 test-config-env.py
89 89 test-config.t
90 90 test-conflict.t
91 91 test-confused-revert.t
92 92 test-context-metadata.t
93 93 test-context.py
94 94 test-contrib-check-code.t
95 95 test-contrib-check-commit.t
96 96 test-contrib-dumprevlog.t
97 97 test-contrib-perf.t
98 98 test-contrib-relnotes.t
99 99 test-contrib-testparseutil.t
100 100 test-contrib.t
101 101 test-convert-authormap.t
102 102 test-convert-clonebranches.t
103 103 test-convert-cvs-branch.t
104 104 test-convert-cvs-detectmerge.t
105 105 test-convert-cvs-synthetic.t
106 106 test-convert-cvs.t
107 107 test-convert-cvsnt-mergepoints.t
108 108 test-convert-datesort.t
109 109 test-convert-filemap.t
110 110 test-convert-hg-sink.t
111 111 test-convert-hg-source.t
112 112 test-convert-hg-startrev.t
113 113 test-convert-splicemap.t
114 114 test-convert-tagsbranch-topology.t
115 115 test-copy-move-merge.t
116 116 test-copy.t
117 117 test-copytrace-heuristics.t
118 118 test-debugbuilddag.t
119 119 test-debugbundle.t
120 120 test-debugcommands.t
121 121 test-debugextensions.t
122 122 test-debugindexdot.t
123 123 test-debugrename.t
124 124 test-default-push.t
125 125 test-diff-antipatience.t
126 126 test-diff-binary-file.t
127 127 test-diff-change.t
128 128 test-diff-color.t
129 129 test-diff-copy-depth.t
130 130 test-diff-hashes.t
131 131 test-diff-ignore-whitespace.t
132 132 test-diff-indent-heuristic.t
133 133 test-diff-issue2761.t
134 134 test-diff-newlines.t
135 135 test-diff-reverse.t
136 136 test-diff-subdir.t
137 137 test-diff-unified.t
138 138 test-diff-upgrade.t
139 139 test-diffdir.t
140 140 test-diffstat.t
141 141 test-directaccess.t
142 142 test-dirstate-backup.t
143 143 test-dirstate-nonnormalset.t
144 144 test-dirstate-race.t
145 145 test-dirstate.t
146 146 test-dispatch.py
147 147 test-doctest.py
148 148 test-double-merge.t
149 149 test-drawdag.t
150 150 test-duplicateoptions.py
151 151 test-editor-filename.t
152 152 test-empty-dir.t
153 153 test-empty-file.t
154 154 test-empty-group.t
155 155 test-empty.t
156 156 test-encode.t
157 157 test-encoding-func.py
158 158 test-encoding.t
159 159 test-eol-add.t
160 160 test-eol-clone.t
161 161 test-eol-hook.t
162 162 test-eol-patch.t
163 163 test-eol-tag.t
164 164 test-eol-update.t
165 165 test-eol.t
166 166 test-eolfilename.t
167 167 test-excessive-merge.t
168 168 test-exchange-obsmarkers-case-A1.t
169 169 test-exchange-obsmarkers-case-A2.t
170 170 test-exchange-obsmarkers-case-A3.t
171 171 test-exchange-obsmarkers-case-A4.t
172 172 test-exchange-obsmarkers-case-A5.t
173 173 test-exchange-obsmarkers-case-A6.t
174 174 test-exchange-obsmarkers-case-A7.t
175 175 test-exchange-obsmarkers-case-B1.t
176 176 test-exchange-obsmarkers-case-B2.t
177 177 test-exchange-obsmarkers-case-B3.t
178 178 test-exchange-obsmarkers-case-B4.t
179 179 test-exchange-obsmarkers-case-B5.t
180 180 test-exchange-obsmarkers-case-B6.t
181 181 test-exchange-obsmarkers-case-B7.t
182 182 test-exchange-obsmarkers-case-C1.t
183 183 test-exchange-obsmarkers-case-C2.t
184 184 test-exchange-obsmarkers-case-C3.t
185 185 test-exchange-obsmarkers-case-C4.t
186 186 test-exchange-obsmarkers-case-D1.t
187 187 test-exchange-obsmarkers-case-D2.t
188 188 test-exchange-obsmarkers-case-D3.t
189 189 test-exchange-obsmarkers-case-D4.t
190 190 test-execute-bit.t
191 191 test-export.t
192 192 test-extdata.t
193 193 test-extdiff.t
194 194 test-extensions-afterloaded.t
195 195 test-extensions-wrapfunction.py
196 196 test-extra-filelog-entry.t
197 197 test-fetch.t
198 198 test-filebranch.t
199 199 test-filecache.py
200 200 test-filelog.py
201 201 test-fileset-generated.t
202 202 test-fileset.t
203 203 test-fix-topology.t
204 204 test-fix.t
205 205 test-flags.t
206 206 test-fncache.t
207 207 test-generaldelta.t
208 208 test-getbundle.t
209 209 test-git-export.t
210 210 test-globalopts.t
211 211 test-glog-beautifygraph.t
212 212 test-glog-topological.t
213 213 test-glog.t
214 214 test-gpg.t
215 215 test-graft.t
216 216 test-grep.t
217 test-hardlinks.t
217 218 test-hg-parseurl.py
218 219 test-hghave.t
219 220 test-hgignore.t
220 221 test-hgk.t
221 222 test-hgrc.t
222 223 test-hgweb-annotate-whitespace.t
223 224 test-hgweb-bundle.t
224 225 test-hgweb-csp.t
225 226 test-hgweb-descend-empties.t
226 227 test-hgweb-diffs.t
227 228 test-hgweb-empty.t
228 229 test-hgweb-filelog.t
229 230 test-hgweb-non-interactive.t
230 231 test-hgweb-raw.t
231 232 test-hgweb-removed.t
232 233 test-hgweb.t
233 234 test-hgwebdir-paths.py
234 235 test-hgwebdirsym.t
235 236 test-histedit-arguments.t
236 237 test-histedit-base.t
237 238 test-histedit-bookmark-motion.t
238 239 test-histedit-commute.t
239 240 test-histedit-drop.t
240 241 test-histedit-edit.t
241 242 test-histedit-fold-non-commute.t
242 243 test-histedit-fold.t
243 244 test-histedit-no-backup.t
244 245 test-histedit-no-change.t
245 246 test-histedit-non-commute-abort.t
246 247 test-histedit-non-commute.t
247 248 test-histedit-obsolete.t
248 249 test-histedit-outgoing.t
249 250 test-histedit-templates.t
250 251 test-http-branchmap.t
251 252 test-http-bundle1.t
252 253 test-http-clone-r.t
253 254 test-http-permissions.t
254 255 test-http.t
255 256 test-hybridencode.py
256 257 test-i18n.t
257 258 test-identify.t
258 259 test-impexp-branch.t
259 260 test-import-bypass.t
260 261 test-import-eol.t
261 262 test-import-merge.t
262 263 test-import-unknown.t
263 264 test-import.t
264 265 test-imports-checker.t
265 266 test-incoming-outgoing.t
266 267 test-infinitepush-bundlestore.t
267 268 test-infinitepush-ci.t
268 269 test-infinitepush.t
269 270 test-inherit-mode.t
270 271 test-init.t
271 272 test-issue1089.t
272 273 test-issue1102.t
273 274 test-issue1175.t
274 275 test-issue1306.t
275 276 test-issue1438.t
276 277 test-issue1502.t
277 278 test-issue1802.t
278 279 test-issue1877.t
279 280 test-issue1993.t
280 281 test-issue2137.t
281 282 test-issue3084.t
282 283 test-issue4074.t
283 284 test-issue522.t
284 285 test-issue586.t
285 286 test-issue5979.t
286 287 test-issue612.t
287 288 test-issue619.t
288 289 test-issue660.t
289 290 test-issue672.t
290 291 test-issue842.t
291 292 test-journal-exists.t
292 293 test-journal-share.t
293 294 test-journal.t
294 295 test-keyword.t
295 296 test-known.t
296 297 test-largefiles-cache.t
297 298 test-largefiles-misc.t
298 299 test-largefiles-small-disk.t
299 300 test-largefiles-update.t
300 301 test-largefiles.t
301 302 test-lfs-largefiles.t
302 303 test-lfs-pointer.py
303 304 test-linelog.py
304 305 test-linerange.py
305 306 test-locate.t
306 307 test-lock-badness.t
307 308 test-log-linerange.t
308 309 test-log.t
309 310 test-logexchange.t
310 311 test-lrucachedict.py
311 312 test-mactext.t
312 313 test-mailmap.t
313 314 test-manifest-merging.t
314 315 test-manifest.py
315 316 test-manifest.t
316 317 test-match.py
317 318 test-mdiff.py
318 319 test-merge-changedelete.t
319 320 test-merge-closedheads.t
320 321 test-merge-commit.t
321 322 test-merge-criss-cross.t
322 323 test-merge-default.t
323 324 test-merge-force.t
324 325 test-merge-halt.t
325 326 test-merge-internal-tools-pattern.t
326 327 test-merge-local.t
327 328 test-merge-no-file-change.t
328 329 test-merge-remove.t
329 330 test-merge-revert.t
330 331 test-merge-revert2.t
331 332 test-merge-subrepos.t
332 333 test-merge-symlinks.t
333 334 test-merge-tools.t
334 335 test-merge-types.t
335 336 test-merge1.t
336 337 test-merge10.t
337 338 test-merge2.t
338 339 test-merge4.t
339 340 test-merge5.t
340 341 test-merge6.t
341 342 test-merge7.t
342 343 test-merge8.t
343 344 test-merge9.t
344 345 test-minifileset.py
345 346 test-minirst.py
346 347 test-mq-git.t
347 348 test-mq-guards.t
348 349 test-mq-header-date.t
349 350 test-mq-header-from.t
350 351 test-mq-merge.t
351 352 test-mq-pull-from-bundle.t
352 353 test-mq-qclone-http.t
353 354 test-mq-qdelete.t
354 355 test-mq-qdiff.t
355 356 test-mq-qfold.t
356 357 test-mq-qgoto.t
357 358 test-mq-qimport-fail-cleanup.t
358 359 test-mq-qnew.t
359 360 test-mq-qpush-exact.t
360 361 test-mq-qpush-fail.t
361 362 test-mq-qqueue.t
362 363 test-mq-qrefresh-interactive.t
363 364 test-mq-qrefresh-replace-log-message.t
364 365 test-mq-qrefresh.t
365 366 test-mq-qrename.t
366 367 test-mq-qsave.t
367 368 test-mq-safety.t
368 369 test-mq-subrepo.t
369 370 test-mq-symlinks.t
370 371 test-mq.t
371 372 test-mv-cp-st-diff.t
372 373 test-narrow-acl.t
373 374 test-narrow-archive.t
374 375 test-narrow-clone-no-ellipsis.t
375 376 test-narrow-clone-non-narrow-server.t
376 377 test-narrow-clone-nonlinear.t
377 378 test-narrow-clone.t
378 379 test-narrow-commit.t
379 380 test-narrow-copies.t
380 381 test-narrow-debugcommands.t
381 382 test-narrow-debugrebuilddirstate.t
382 383 test-narrow-exchange-merges.t
383 384 test-narrow-exchange.t
384 385 test-narrow-expanddirstate.t
385 386 test-narrow-merge.t
386 387 test-narrow-patch.t
387 388 test-narrow-patterns.t
388 389 test-narrow-pull.t
389 390 test-narrow-rebase.t
390 391 test-narrow-shallow-merges.t
391 392 test-narrow-shallow.t
392 393 test-narrow-strip.t
393 394 test-narrow-trackedcmd.t
394 395 test-narrow-update.t
395 396 test-narrow-widen-no-ellipsis.t
396 397 test-narrow-widen.t
397 398 test-narrow.t
398 399 test-nested-repo.t
399 400 test-newbranch.t
400 401 test-newercgi.t
401 402 test-nointerrupt.t
402 403 test-obshistory.t
403 404 test-obsmarker-template.t
404 405 test-obsmarkers-effectflag.t
405 406 test-obsolete-bounds-checking.t
406 407 test-obsolete-bundle-strip.t
407 408 test-obsolete-changeset-exchange.t
408 409 test-obsolete-checkheads.t
409 410 test-obsolete-distributed.t
410 411 test-obsolete-divergent.t
411 412 test-obsolete-tag-cache.t
412 413 test-obsolete.t
413 414 test-origbackup-conflict.t
414 415 test-pager-legacy.t
415 416 test-pager.t
416 417 test-parents.t
417 418 test-parse-date.t
418 419 test-parseindex2.py
419 420 test-patch-offset.t
420 421 test-patch.t
421 422 test-patchbomb-bookmark.t
422 423 test-patchbomb-tls.t
423 424 test-patchbomb.t
424 425 test-pathconflicts-basic.t
425 426 test-pathconflicts-merge.t
426 427 test-pathconflicts-update.t
427 428 test-pathencode.py
428 429 test-pending.t
429 430 test-permissions.t
430 431 test-phases-exchange.t
431 432 test-phases.t
432 433 test-profile.t
433 434 test-progress.t
434 435 test-pull-branch.t
435 436 test-pull-http.t
436 437 test-pull-permission.t
437 438 test-pull-pull-corruption.t
438 439 test-pull-r.t
439 440 test-pull-update.t
440 441 test-pull.t
441 442 test-purge.t
442 443 test-push-cgi.t
443 444 test-push-checkheads-partial-C1.t
444 445 test-push-checkheads-partial-C2.t
445 446 test-push-checkheads-partial-C3.t
446 447 test-push-checkheads-partial-C4.t
447 448 test-push-checkheads-pruned-B1.t
448 449 test-push-checkheads-pruned-B2.t
449 450 test-push-checkheads-pruned-B3.t
450 451 test-push-checkheads-pruned-B4.t
451 452 test-push-checkheads-pruned-B5.t
452 453 test-push-checkheads-pruned-B6.t
453 454 test-push-checkheads-pruned-B7.t
454 455 test-push-checkheads-pruned-B8.t
455 456 test-push-checkheads-superceed-A1.t
456 457 test-push-checkheads-superceed-A2.t
457 458 test-push-checkheads-superceed-A3.t
458 459 test-push-checkheads-superceed-A4.t
459 460 test-push-checkheads-superceed-A5.t
460 461 test-push-checkheads-superceed-A6.t
461 462 test-push-checkheads-superceed-A7.t
462 463 test-push-checkheads-superceed-A8.t
463 464 test-push-checkheads-unpushed-D1.t
464 465 test-push-checkheads-unpushed-D2.t
465 466 test-push-checkheads-unpushed-D3.t
466 467 test-push-checkheads-unpushed-D4.t
467 468 test-push-checkheads-unpushed-D5.t
468 469 test-push-checkheads-unpushed-D6.t
469 470 test-push-checkheads-unpushed-D7.t
470 471 test-push-http.t
471 472 test-push-warn.t
472 473 test-push.t
473 474 test-pushvars.t
474 475 test-qrecord.t
475 476 test-rebase-abort.t
476 477 test-rebase-backup.t
477 478 test-rebase-base-flag.t
478 479 test-rebase-bookmarks.t
479 480 test-rebase-brute-force.t
480 481 test-rebase-cache.t
481 482 test-rebase-check-restore.t
482 483 test-rebase-collapse.t
483 484 test-rebase-conflicts.t
484 485 test-rebase-dest.t
485 486 test-rebase-detach.t
486 487 test-rebase-emptycommit.t
487 488 test-rebase-inmemory.t
488 489 test-rebase-interruptions.t
489 490 test-rebase-issue-noparam-single-rev.t
490 491 test-rebase-legacy.t
491 492 test-rebase-mq-skip.t
492 493 test-rebase-mq.t
493 494 test-rebase-named-branches.t
494 495 test-rebase-newancestor.t
495 496 test-rebase-obsolete.t
496 497 test-rebase-parameters.t
497 498 test-rebase-partial.t
498 499 test-rebase-pull.t
499 500 test-rebase-rename.t
500 501 test-rebase-scenario-global.t
501 502 test-rebase-templates.t
502 503 test-rebase-transaction.t
503 504 test-rebuildstate.t
504 505 test-record.t
505 506 test-releasenotes-formatting.t
506 507 test-releasenotes-merging.t
507 508 test-releasenotes-parsing.t
508 509 test-relink.t
509 510 test-remove.t
510 511 test-removeemptydirs.t
511 512 test-rename-after-merge.t
512 513 test-rename-dir-merge.t
513 514 test-rename-merge1.t
514 515 test-rename-merge2.t
515 516 test-rename.t
516 517 test-repair-strip.t
517 518 test-repo-compengines.t
518 519 test-requires.t
519 520 test-resolve.t
520 521 test-revert-flags.t
521 522 test-revert-interactive.t
522 523 test-revert-unknown.t
523 524 test-revert.t
524 525 test-revisions.t
525 526 test-revlog-ancestry.py
526 527 test-revlog-group-emptyiter.t
527 528 test-revlog-mmapindex.t
528 529 test-revlog-packentry.t
529 530 test-revlog-raw.py
530 531 test-revlog-v2.t
531 532 test-revlog.t
532 533 test-revset-dirstate-parents.t
533 534 test-revset-legacy-lookup.t
534 535 test-revset-outgoing.t
535 536 test-rollback.t
536 537 test-run-tests.py
537 538 test-run-tests.t
538 539 test-schemes.t
539 540 test-serve.t
540 541 test-setdiscovery.t
541 542 test-share.t
542 543 test-shelve.t
543 544 test-show-stack.t
544 545 test-show-work.t
545 546 test-show.t
546 547 test-simple-update.t
547 548 test-simplekeyvaluefile.py
548 549 test-simplemerge.py
549 550 test-single-head.t
550 551 test-sparse-clear.t
551 552 test-sparse-clone.t
552 553 test-sparse-import.t
553 554 test-sparse-merges.t
554 555 test-sparse-profiles.t
555 556 test-sparse-requirement.t
556 557 test-sparse-verbose-json.t
557 558 test-sparse.t
558 559 test-split.t
559 560 test-ssh-bundle1.t
560 561 test-ssh-clone-r.t
561 562 test-ssh-proto-unbundle.t
562 563 test-ssh-proto.t
563 564 test-ssh-repoerror.t
564 565 test-ssh.t
565 566 test-sshserver.py
566 567 test-stack.t
567 568 test-status-color.t
568 569 test-status-inprocess.py
569 570 test-status-rev.t
570 571 test-status-terse.t
571 572 test-status.t
572 573 test-storage.py
573 574 test-stream-bundle-v2.t
574 575 test-strict.t
575 576 test-strip-cross.t
576 577 test-strip.t
577 578 test-subrepo-deep-nested-change.t
578 579 test-subrepo-missing.t
579 580 test-subrepo-paths.t
580 581 test-subrepo-recursion.t
581 582 test-subrepo-relative-path.t
582 583 test-subrepo.t
583 584 test-symlink-os-yes-fs-no.py
584 585 test-symlink-placeholder.t
585 586 test-symlinks.t
586 587 test-tag.t
587 588 test-tags.t
588 589 test-template-basic.t
589 590 test-template-functions.t
590 591 test-template-keywords.t
591 592 test-template-map.t
592 593 test-tools.t
593 594 test-transplant.t
594 595 test-treemanifest.t
595 596 test-ui-color.py
596 597 test-ui-config.py
597 598 test-ui-verbosity.py
598 599 test-unamend.t
599 600 test-unbundlehash.t
600 601 test-uncommit.t
601 602 test-unified-test.t
602 603 test-unionrepo.t
603 604 test-unrelated-pull.t
604 605 test-up-local-change.t
605 606 test-update-branches.t
606 607 test-update-dest.t
607 608 test-update-issue1456.t
608 609 test-update-names.t
609 610 test-update-reverse.t
610 611 test-upgrade-repo.t
611 612 test-url-download.t
612 613 test-url-rev.t
613 614 test-url.py
614 615 test-username-newline.t
615 616 test-util.py
616 617 test-verify.t
617 618 test-walk.t
618 619 test-walkrepo.py
619 620 test-websub.t
620 621 test-win32text.t
621 622 test-wireproto-clientreactor.py
622 623 test-wireproto-command-branchmap.t
623 624 test-wireproto-command-changesetdata.t
624 625 test-wireproto-command-filedata.t
625 626 test-wireproto-command-filesdata.t
626 627 test-wireproto-command-heads.t
627 628 test-wireproto-command-listkeys.t
628 629 test-wireproto-command-lookup.t
629 630 test-wireproto-command-manifestdata.t
630 631 test-wireproto-command-pushkey.t
631 632 test-wireproto-framing.py
632 633 test-wireproto-serverreactor.py
633 634 test-wireproto.py
634 635 test-wsgirequest.py
635 636 test-xdg.t
@@ -1,431 +1,432 b''
1 1 #require hardlink reporevlogstore
2 2
3 3 $ cat > nlinks.py <<EOF
4 4 > from __future__ import print_function
5 5 > import sys
6 6 > from mercurial import util
7 7 > for f in sorted(sys.stdin.readlines()):
8 8 > f = f[:-1]
9 9 > print(util.nlinks(f), f)
10 10 > EOF
11 11
12 12 $ nlinksdir()
13 13 > {
14 14 > find "$@" -type f | "$PYTHON" $TESTTMP/nlinks.py
15 15 > }
16 16
17 17 Some implementations of cp can't create hardlinks (replaces 'cp -al' on Linux):
18 18
19 19 $ cat > linkcp.py <<EOF
20 20 > from __future__ import absolute_import
21 21 > import sys
22 > from mercurial import util
23 > util.copyfiles(sys.argv[1], sys.argv[2], hardlink=True)
22 > from mercurial import pycompat, util
23 > util.copyfiles(pycompat.fsencode(sys.argv[1]),
24 > pycompat.fsencode(sys.argv[2]), hardlink=True)
24 25 > EOF
25 26
26 27 $ linkcp()
27 28 > {
28 29 > "$PYTHON" $TESTTMP/linkcp.py $1 $2
29 30 > }
30 31
31 32 Prepare repo r1:
32 33
33 34 $ hg init r1
34 35 $ cd r1
35 36
36 37 $ echo c1 > f1
37 38 $ hg add f1
38 39 $ hg ci -m0
39 40
40 41 $ mkdir d1
41 42 $ cd d1
42 43 $ echo c2 > f2
43 44 $ hg add f2
44 45 $ hg ci -m1
45 46 $ cd ../..
46 47
47 48 $ nlinksdir r1/.hg/store
48 49 1 r1/.hg/store/00changelog.i
49 50 1 r1/.hg/store/00manifest.i
50 51 1 r1/.hg/store/data/d1/f2.i
51 52 1 r1/.hg/store/data/f1.i
52 53 1 r1/.hg/store/fncache (repofncache !)
53 54 1 r1/.hg/store/phaseroots
54 55 1 r1/.hg/store/undo
55 56 1 r1/.hg/store/undo.backup.fncache (repofncache !)
56 57 1 r1/.hg/store/undo.backupfiles
57 58 1 r1/.hg/store/undo.phaseroots
58 59
59 60
60 61 Create hardlinked clone r2:
61 62
62 63 $ hg clone -U --debug r1 r2 --config progress.debug=true
63 64 linking: 1
64 65 linking: 2
65 66 linking: 3
66 67 linking: 4
67 68 linking: 5
68 69 linking: 6
69 70 linking: 7
70 71 linked 7 files
71 72
72 73 Create non-hardlinked clone r3:
73 74
74 75 $ hg clone --pull r1 r3
75 76 requesting all changes
76 77 adding changesets
77 78 adding manifests
78 79 adding file changes
79 80 added 2 changesets with 2 changes to 2 files
80 81 new changesets 40d85e9847f2:7069c422939c
81 82 updating to branch default
82 83 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 84
84 85
85 86 Repos r1 and r2 should now contain hardlinked files:
86 87
87 88 $ nlinksdir r1/.hg/store
88 89 2 r1/.hg/store/00changelog.i
89 90 2 r1/.hg/store/00manifest.i
90 91 2 r1/.hg/store/data/d1/f2.i
91 92 2 r1/.hg/store/data/f1.i
92 93 2 r1/.hg/store/fncache (repofncache !)
93 94 1 r1/.hg/store/phaseroots
94 95 1 r1/.hg/store/undo
95 96 1 r1/.hg/store/undo.backup.fncache (repofncache !)
96 97 1 r1/.hg/store/undo.backupfiles
97 98 1 r1/.hg/store/undo.phaseroots
98 99
99 100 $ nlinksdir r2/.hg/store
100 101 2 r2/.hg/store/00changelog.i
101 102 2 r2/.hg/store/00manifest.i
102 103 2 r2/.hg/store/data/d1/f2.i
103 104 2 r2/.hg/store/data/f1.i
104 105 2 r2/.hg/store/fncache (repofncache !)
105 106
106 107 Repo r3 should not be hardlinked:
107 108
108 109 $ nlinksdir r3/.hg/store
109 110 1 r3/.hg/store/00changelog.i
110 111 1 r3/.hg/store/00manifest.i
111 112 1 r3/.hg/store/data/d1/f2.i
112 113 1 r3/.hg/store/data/f1.i
113 114 1 r3/.hg/store/fncache (repofncache !)
114 115 1 r3/.hg/store/phaseroots
115 116 1 r3/.hg/store/undo
116 117 1 r3/.hg/store/undo.backupfiles
117 118 1 r3/.hg/store/undo.phaseroots
118 119
119 120
120 121 Create a non-inlined filelog in r3:
121 122
122 123 $ cd r3/d1
123 124 >>> f = open('data1', 'wb')
124 125 >>> for x in range(10000):
125 126 ... f.write(b"%d\n" % x) and None
126 127 >>> f.close()
127 128 $ for j in 0 1 2 3 4 5 6 7 8 9; do
128 129 > cat data1 >> f2
129 130 > hg commit -m$j
130 131 > done
131 132 $ cd ../..
132 133
133 134 $ nlinksdir r3/.hg/store
134 135 1 r3/.hg/store/00changelog.i
135 136 1 r3/.hg/store/00manifest.i
136 137 1 r3/.hg/store/data/d1/f2.d
137 138 1 r3/.hg/store/data/d1/f2.i
138 139 1 r3/.hg/store/data/f1.i
139 140 1 r3/.hg/store/fncache (repofncache !)
140 141 1 r3/.hg/store/phaseroots
141 142 1 r3/.hg/store/undo
142 143 1 r3/.hg/store/undo.backup.fncache (repofncache !)
143 144 1 r3/.hg/store/undo.backup.phaseroots
144 145 1 r3/.hg/store/undo.backupfiles
145 146 1 r3/.hg/store/undo.phaseroots
146 147
147 148 Push to repo r1 should break up most hardlinks in r2:
148 149
149 150 $ hg -R r2 verify
150 151 checking changesets
151 152 checking manifests
152 153 crosschecking files in changesets and manifests
153 154 checking files
154 155 checked 2 changesets with 2 changes to 2 files
155 156
156 157 $ cd r3
157 158 $ hg push
158 159 pushing to $TESTTMP/r1
159 160 searching for changes
160 161 adding changesets
161 162 adding manifests
162 163 adding file changes
163 164 added 10 changesets with 10 changes to 1 files
164 165
165 166 $ cd ..
166 167
167 168 $ nlinksdir r2/.hg/store
168 169 1 r2/.hg/store/00changelog.i
169 170 1 r2/.hg/store/00manifest.i
170 171 1 r2/.hg/store/data/d1/f2.i
171 172 2 r2/.hg/store/data/f1.i
172 173 [12] r2/\.hg/store/fncache (re) (repofncache !)
173 174
174 175 #if hardlink-whitelisted repofncache
175 176 $ nlinksdir r2/.hg/store/fncache
176 177 2 r2/.hg/store/fncache
177 178 #endif
178 179
179 180 $ hg -R r2 verify
180 181 checking changesets
181 182 checking manifests
182 183 crosschecking files in changesets and manifests
183 184 checking files
184 185 checked 2 changesets with 2 changes to 2 files
185 186
186 187
187 188 $ cd r1
188 189 $ hg up
189 190 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
190 191
191 192 Committing a change to f1 in r1 must break up hardlink f1.i in r2:
192 193
193 194 $ echo c1c1 >> f1
194 195 $ hg ci -m00
195 196 $ cd ..
196 197
197 198 $ nlinksdir r2/.hg/store
198 199 1 r2/.hg/store/00changelog.i
199 200 1 r2/.hg/store/00manifest.i
200 201 1 r2/.hg/store/data/d1/f2.i
201 202 1 r2/.hg/store/data/f1.i
202 203 [12] r2/\.hg/store/fncache (re) (repofncache !)
203 204
204 205 #if hardlink-whitelisted repofncache
205 206 $ nlinksdir r2/.hg/store/fncache
206 207 2 r2/.hg/store/fncache
207 208 #endif
208 209
209 210 Create a file which exec permissions we will change
210 211 $ cd r3
211 212 $ echo "echo hello world" > f3
212 213 $ hg add f3
213 214 $ hg ci -mf3
214 215 $ cd ..
215 216
216 217 $ cd r3
217 218 $ hg tip --template '{rev}:{node|short}\n'
218 219 12:d3b77733a28a
219 220 $ echo bla > f1
220 221 $ chmod +x f3
221 222 $ hg ci -m1
222 223 $ cd ..
223 224
224 225 Create hardlinked copy r4 of r3 (on Linux, we would call 'cp -al'):
225 226
226 227 $ linkcp r3 r4
227 228
228 229 'checklink' is produced by hardlinking a symlink, which is undefined whether
229 230 the symlink should be followed or not. It does behave differently on Linux and
230 231 BSD. Just remove it so the test pass on both platforms.
231 232
232 233 $ rm -f r4/.hg/cache/checklink
233 234
234 235 r4 has hardlinks in the working dir (not just inside .hg):
235 236
236 237 $ nlinksdir r4
237 238 2 r4/.hg/00changelog.i
238 239 2 r4/.hg/branch
239 240 2 r4/.hg/cache/branch2-base
240 241 2 r4/.hg/cache/branch2-served
241 242 2 r4/.hg/cache/checkisexec (execbit !)
242 243 ? r4/.hg/cache/checklink-target (glob) (symlink !)
243 244 2 r4/.hg/cache/checknoexec (execbit !)
244 245 2 r4/.hg/cache/manifestfulltextcache (reporevlogstore !)
245 246 2 r4/.hg/cache/rbc-names-v1
246 247 2 r4/.hg/cache/rbc-revs-v1
247 248 2 r4/.hg/dirstate
248 249 2 r4/.hg/fsmonitor.state (fsmonitor !)
249 250 2 r4/.hg/hgrc
250 251 2 r4/.hg/last-message.txt
251 252 2 r4/.hg/requires
252 253 2 r4/.hg/store/00changelog.i
253 254 2 r4/.hg/store/00manifest.i
254 255 2 r4/.hg/store/data/d1/f2.d
255 256 2 r4/.hg/store/data/d1/f2.i
256 257 2 r4/.hg/store/data/f1.i
257 258 2 r4/.hg/store/data/f3.i
258 259 2 r4/.hg/store/fncache (repofncache !)
259 260 2 r4/.hg/store/phaseroots
260 261 2 r4/.hg/store/undo
261 262 2 r4/.hg/store/undo.backup.fncache (repofncache !)
262 263 2 r4/.hg/store/undo.backup.phaseroots
263 264 2 r4/.hg/store/undo.backupfiles
264 265 2 r4/.hg/store/undo.phaseroots
265 266 [24] r4/\.hg/undo\.backup\.dirstate (re)
266 267 2 r4/.hg/undo.bookmarks
267 268 2 r4/.hg/undo.branch
268 269 2 r4/.hg/undo.desc
269 270 [24] r4/\.hg/undo\.dirstate (re)
270 271 2 r4/d1/data1
271 272 2 r4/d1/f2
272 273 2 r4/f1
273 274 2 r4/f3
274 275
275 276 Update back to revision 12 in r4 should break hardlink of file f1 and f3:
276 277 #if hardlink-whitelisted
277 278 $ nlinksdir r4/.hg/undo.backup.dirstate r4/.hg/undo.dirstate
278 279 4 r4/.hg/undo.backup.dirstate
279 280 4 r4/.hg/undo.dirstate
280 281 #endif
281 282
282 283
283 284 $ hg -R r4 up 12
284 285 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (execbit !)
285 286 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-execbit !)
286 287
287 288 $ nlinksdir r4
288 289 2 r4/.hg/00changelog.i
289 290 1 r4/.hg/branch
290 291 2 r4/.hg/cache/branch2-base
291 292 2 r4/.hg/cache/branch2-served
292 293 2 r4/.hg/cache/checkisexec (execbit !)
293 294 2 r4/.hg/cache/checklink-target (symlink !)
294 295 2 r4/.hg/cache/checknoexec (execbit !)
295 296 2 r4/.hg/cache/manifestfulltextcache (reporevlogstore !)
296 297 2 r4/.hg/cache/rbc-names-v1
297 298 2 r4/.hg/cache/rbc-revs-v1
298 299 1 r4/.hg/dirstate
299 300 1 r4/.hg/fsmonitor.state (fsmonitor !)
300 301 2 r4/.hg/hgrc
301 302 2 r4/.hg/last-message.txt
302 303 2 r4/.hg/requires
303 304 2 r4/.hg/store/00changelog.i
304 305 2 r4/.hg/store/00manifest.i
305 306 2 r4/.hg/store/data/d1/f2.d
306 307 2 r4/.hg/store/data/d1/f2.i
307 308 2 r4/.hg/store/data/f1.i
308 309 2 r4/.hg/store/data/f3.i
309 310 2 r4/.hg/store/fncache
310 311 2 r4/.hg/store/phaseroots
311 312 2 r4/.hg/store/undo
312 313 2 r4/.hg/store/undo.backup.fncache (repofncache !)
313 314 2 r4/.hg/store/undo.backup.phaseroots
314 315 2 r4/.hg/store/undo.backupfiles
315 316 2 r4/.hg/store/undo.phaseroots
316 317 [24] r4/\.hg/undo\.backup\.dirstate (re)
317 318 2 r4/.hg/undo.bookmarks
318 319 2 r4/.hg/undo.branch
319 320 2 r4/.hg/undo.desc
320 321 [24] r4/\.hg/undo\.dirstate (re)
321 322 2 r4/d1/data1
322 323 2 r4/d1/f2
323 324 1 r4/f1
324 325 1 r4/f3 (execbit !)
325 326 2 r4/f3 (no-execbit !)
326 327
327 328 #if hardlink-whitelisted
328 329 $ nlinksdir r4/.hg/undo.backup.dirstate r4/.hg/undo.dirstate
329 330 4 r4/.hg/undo.backup.dirstate
330 331 4 r4/.hg/undo.dirstate
331 332 #endif
332 333
333 334 Test hardlinking outside hg:
334 335
335 336 $ mkdir x
336 337 $ echo foo > x/a
337 338
338 339 $ linkcp x y
339 340 $ echo bar >> y/a
340 341
341 342 No diff if hardlink:
342 343
343 344 $ diff x/a y/a
344 345
345 346 Test mq hardlinking:
346 347
347 348 $ echo "[extensions]" >> $HGRCPATH
348 349 $ echo "mq=" >> $HGRCPATH
349 350
350 351 $ hg init a
351 352 $ cd a
352 353
353 354 $ hg qimport -n foo - << EOF
354 355 > # HG changeset patch
355 356 > # Date 1 0
356 357 > diff -r 2588a8b53d66 a
357 358 > --- /dev/null Thu Jan 01 00:00:00 1970 +0000
358 359 > +++ b/a Wed Jul 23 15:54:29 2008 +0200
359 360 > @@ -0,0 +1,1 @@
360 361 > +a
361 362 > EOF
362 363 adding foo to series file
363 364
364 365 $ hg qpush
365 366 applying foo
366 367 now at: foo
367 368
368 369 $ cd ..
369 370 $ linkcp a b
370 371 $ cd b
371 372
372 373 $ hg qimport -n bar - << EOF
373 374 > # HG changeset patch
374 375 > # Date 2 0
375 376 > diff -r 2588a8b53d66 a
376 377 > --- /dev/null Thu Jan 01 00:00:00 1970 +0000
377 378 > +++ b/b Wed Jul 23 15:54:29 2008 +0200
378 379 > @@ -0,0 +1,1 @@
379 380 > +b
380 381 > EOF
381 382 adding bar to series file
382 383
383 384 $ hg qpush
384 385 applying bar
385 386 now at: bar
386 387
387 388 $ cat .hg/patches/status
388 389 430ed4828a74fa4047bc816a25500f7472ab4bfe:foo
389 390 4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c:bar
390 391
391 392 $ cat .hg/patches/series
392 393 foo
393 394 bar
394 395
395 396 $ cat ../a/.hg/patches/status
396 397 430ed4828a74fa4047bc816a25500f7472ab4bfe:foo
397 398
398 399 $ cat ../a/.hg/patches/series
399 400 foo
400 401
401 402 Test tags hardlinking:
402 403
403 404 $ hg qdel -r qbase:qtip
404 405 patch foo finalized without changeset message
405 406 patch bar finalized without changeset message
406 407
407 408 $ hg tag -l lfoo
408 409 $ hg tag foo
409 410
410 411 $ cd ..
411 412 $ linkcp b c
412 413 $ cd c
413 414
414 415 $ hg tag -l -r 0 lbar
415 416 $ hg tag -r 0 bar
416 417
417 418 $ cat .hgtags
418 419 4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c foo
419 420 430ed4828a74fa4047bc816a25500f7472ab4bfe bar
420 421
421 422 $ cat .hg/localtags
422 423 4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c lfoo
423 424 430ed4828a74fa4047bc816a25500f7472ab4bfe lbar
424 425
425 426 $ cat ../b/.hgtags
426 427 4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c foo
427 428
428 429 $ cat ../b/.hg/localtags
429 430 4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c lfoo
430 431
431 432 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now