##// END OF EJS Templates
py3: byteify test-push-race.t
Matt Harbison -
r40905:d3d52cc9 default
parent child Browse files
Show More
@@ -1,660 +1,661 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-commandserver.t
82 82 test-commit-amend.t
83 83 test-commit-interactive.t
84 84 test-commit-multiple.t
85 85 test-commit-unresolved.t
86 86 test-commit.t
87 87 test-committer.t
88 88 test-completion.t
89 89 test-config-env.py
90 90 test-config.t
91 91 test-conflict.t
92 92 test-confused-revert.t
93 93 test-context-metadata.t
94 94 test-context.py
95 95 test-contrib-check-code.t
96 96 test-contrib-check-commit.t
97 97 test-contrib-dumprevlog.t
98 98 test-contrib-perf.t
99 99 test-contrib-relnotes.t
100 100 test-contrib-testparseutil.t
101 101 test-contrib.t
102 102 test-convert-authormap.t
103 103 test-convert-clonebranches.t
104 104 test-convert-cvs-branch.t
105 105 test-convert-cvs-detectmerge.t
106 106 test-convert-cvs-synthetic.t
107 107 test-convert-cvs.t
108 108 test-convert-cvsnt-mergepoints.t
109 109 test-convert-datesort.t
110 110 test-convert-filemap.t
111 111 test-convert-hg-sink.t
112 112 test-convert-hg-source.t
113 113 test-convert-hg-startrev.t
114 114 test-convert-splicemap.t
115 115 test-convert-tagsbranch-topology.t
116 116 test-copy-move-merge.t
117 117 test-copy.t
118 118 test-copytrace-heuristics.t
119 119 test-custom-filters.t
120 120 test-debugbuilddag.t
121 121 test-debugbundle.t
122 122 test-debugcommands.t
123 123 test-debugextensions.t
124 124 test-debugindexdot.t
125 125 test-debugrename.t
126 126 test-default-push.t
127 127 test-diff-antipatience.t
128 128 test-diff-binary-file.t
129 129 test-diff-change.t
130 130 test-diff-color.t
131 131 test-diff-copy-depth.t
132 132 test-diff-hashes.t
133 133 test-diff-ignore-whitespace.t
134 134 test-diff-indent-heuristic.t
135 135 test-diff-issue2761.t
136 136 test-diff-newlines.t
137 137 test-diff-reverse.t
138 138 test-diff-subdir.t
139 139 test-diff-unified.t
140 140 test-diff-upgrade.t
141 141 test-diffdir.t
142 142 test-diffstat.t
143 143 test-directaccess.t
144 144 test-dirstate-backup.t
145 145 test-dirstate-nonnormalset.t
146 146 test-dirstate-race.t
147 147 test-dirstate.t
148 148 test-dispatch.py
149 149 test-doctest.py
150 150 test-double-merge.t
151 151 test-drawdag.t
152 152 test-duplicateoptions.py
153 153 test-editor-filename.t
154 154 test-empty-dir.t
155 155 test-empty-file.t
156 156 test-empty-group.t
157 157 test-empty.t
158 158 test-encode.t
159 159 test-encoding-func.py
160 160 test-encoding-textwrap.t
161 161 test-encoding.t
162 162 test-eol-add.t
163 163 test-eol-clone.t
164 164 test-eol-hook.t
165 165 test-eol-patch.t
166 166 test-eol-tag.t
167 167 test-eol-update.t
168 168 test-eol.t
169 169 test-eolfilename.t
170 170 test-excessive-merge.t
171 171 test-exchange-obsmarkers-case-A1.t
172 172 test-exchange-obsmarkers-case-A2.t
173 173 test-exchange-obsmarkers-case-A3.t
174 174 test-exchange-obsmarkers-case-A4.t
175 175 test-exchange-obsmarkers-case-A5.t
176 176 test-exchange-obsmarkers-case-A6.t
177 177 test-exchange-obsmarkers-case-A7.t
178 178 test-exchange-obsmarkers-case-B1.t
179 179 test-exchange-obsmarkers-case-B2.t
180 180 test-exchange-obsmarkers-case-B3.t
181 181 test-exchange-obsmarkers-case-B4.t
182 182 test-exchange-obsmarkers-case-B5.t
183 183 test-exchange-obsmarkers-case-B6.t
184 184 test-exchange-obsmarkers-case-B7.t
185 185 test-exchange-obsmarkers-case-C1.t
186 186 test-exchange-obsmarkers-case-C2.t
187 187 test-exchange-obsmarkers-case-C3.t
188 188 test-exchange-obsmarkers-case-C4.t
189 189 test-exchange-obsmarkers-case-D1.t
190 190 test-exchange-obsmarkers-case-D2.t
191 191 test-exchange-obsmarkers-case-D3.t
192 192 test-exchange-obsmarkers-case-D4.t
193 193 test-execute-bit.t
194 194 test-export.t
195 195 test-extdata.t
196 196 test-extdiff.t
197 197 test-extension-timing.t
198 198 test-extensions-afterloaded.t
199 199 test-extensions-wrapfunction.py
200 200 test-extra-filelog-entry.t
201 201 test-fetch.t
202 202 test-filebranch.t
203 203 test-filecache.py
204 204 test-filelog.py
205 205 test-fileset-generated.t
206 206 test-fileset.t
207 207 test-fix-topology.t
208 208 test-fix.t
209 209 test-flags.t
210 210 test-fncache.t
211 211 test-generaldelta.t
212 212 test-getbundle.t
213 213 test-git-export.t
214 214 test-globalopts.t
215 215 test-glog-beautifygraph.t
216 216 test-glog-topological.t
217 217 test-glog.t
218 218 test-gpg.t
219 219 test-graft.t
220 220 test-grep.t
221 221 test-hardlinks.t
222 222 test-help-hide.t
223 223 test-help.t
224 224 test-hg-parseurl.py
225 225 test-hghave.t
226 226 test-hgignore.t
227 227 test-hgk.t
228 228 test-hgrc.t
229 229 test-hgweb-annotate-whitespace.t
230 230 test-hgweb-bundle.t
231 231 test-hgweb-csp.t
232 232 test-hgweb-descend-empties.t
233 233 test-hgweb-diffs.t
234 234 test-hgweb-empty.t
235 235 test-hgweb-filelog.t
236 236 test-hgweb-non-interactive.t
237 237 test-hgweb-raw.t
238 238 test-hgweb-removed.t
239 239 test-hgweb.t
240 240 test-hgwebdir-paths.py
241 241 test-hgwebdirsym.t
242 242 test-histedit-arguments.t
243 243 test-histedit-base.t
244 244 test-histedit-bookmark-motion.t
245 245 test-histedit-commute.t
246 246 test-histedit-drop.t
247 247 test-histedit-edit.t
248 248 test-histedit-fold-non-commute.t
249 249 test-histedit-fold.t
250 250 test-histedit-no-backup.t
251 251 test-histedit-no-change.t
252 252 test-histedit-non-commute-abort.t
253 253 test-histedit-non-commute.t
254 254 test-histedit-obsolete.t
255 255 test-histedit-outgoing.t
256 256 test-histedit-templates.t
257 257 test-http-branchmap.t
258 258 test-http-bundle1.t
259 259 test-http-clone-r.t
260 260 test-http-permissions.t
261 261 test-http.t
262 262 test-hybridencode.py
263 263 test-i18n.t
264 264 test-identify.t
265 265 test-impexp-branch.t
266 266 test-import-bypass.t
267 267 test-import-context.t
268 268 test-import-eol.t
269 269 test-import-merge.t
270 270 test-import-unknown.t
271 271 test-import.t
272 272 test-imports-checker.t
273 273 test-incoming-outgoing.t
274 274 test-infinitepush-bundlestore.t
275 275 test-infinitepush-ci.t
276 276 test-infinitepush.t
277 277 test-inherit-mode.t
278 278 test-init.t
279 279 test-issue1089.t
280 280 test-issue1102.t
281 281 test-issue1175.t
282 282 test-issue1306.t
283 283 test-issue1438.t
284 284 test-issue1502.t
285 285 test-issue1802.t
286 286 test-issue1877.t
287 287 test-issue1993.t
288 288 test-issue2137.t
289 289 test-issue3084.t
290 290 test-issue4074.t
291 291 test-issue522.t
292 292 test-issue586.t
293 293 test-issue5979.t
294 294 test-issue612.t
295 295 test-issue619.t
296 296 test-issue660.t
297 297 test-issue672.t
298 298 test-issue842.t
299 299 test-journal-exists.t
300 300 test-journal-share.t
301 301 test-journal.t
302 302 test-keyword.t
303 303 test-known.t
304 304 test-largefiles-cache.t
305 305 test-largefiles-misc.t
306 306 test-largefiles-small-disk.t
307 307 test-largefiles-update.t
308 308 test-largefiles.t
309 309 test-lfconvert.t
310 310 test-lfs-bundle.t
311 311 test-lfs-largefiles.t
312 312 test-lfs-pointer.py
313 313 test-lfs.t
314 314 test-linelog.py
315 315 test-linerange.py
316 316 test-locate.t
317 317 test-lock-badness.t
318 318 test-log-exthook.t
319 319 test-log-linerange.t
320 320 test-log.t
321 321 test-logexchange.t
322 322 test-logtoprocess.t
323 323 test-lrucachedict.py
324 324 test-mactext.t
325 325 test-mailmap.t
326 326 test-manifest-merging.t
327 327 test-manifest.py
328 328 test-manifest.t
329 329 test-match.py
330 330 test-mdiff.py
331 331 test-merge-changedelete.t
332 332 test-merge-closedheads.t
333 333 test-merge-commit.t
334 334 test-merge-criss-cross.t
335 335 test-merge-default.t
336 336 test-merge-force.t
337 337 test-merge-halt.t
338 338 test-merge-internal-tools-pattern.t
339 339 test-merge-local.t
340 340 test-merge-no-file-change.t
341 341 test-merge-remove.t
342 342 test-merge-revert.t
343 343 test-merge-revert2.t
344 344 test-merge-subrepos.t
345 345 test-merge-symlinks.t
346 346 test-merge-tools.t
347 347 test-merge-types.t
348 348 test-merge1.t
349 349 test-merge10.t
350 350 test-merge2.t
351 351 test-merge4.t
352 352 test-merge5.t
353 353 test-merge6.t
354 354 test-merge7.t
355 355 test-merge8.t
356 356 test-merge9.t
357 357 test-minifileset.py
358 358 test-minirst.py
359 359 test-mq-git.t
360 360 test-mq-guards.t
361 361 test-mq-header-date.t
362 362 test-mq-header-from.t
363 363 test-mq-merge.t
364 364 test-mq-pull-from-bundle.t
365 365 test-mq-qclone-http.t
366 366 test-mq-qdelete.t
367 367 test-mq-qdiff.t
368 368 test-mq-qfold.t
369 369 test-mq-qgoto.t
370 370 test-mq-qimport-fail-cleanup.t
371 371 test-mq-qnew.t
372 372 test-mq-qpush-exact.t
373 373 test-mq-qpush-fail.t
374 374 test-mq-qqueue.t
375 375 test-mq-qrefresh-interactive.t
376 376 test-mq-qrefresh-replace-log-message.t
377 377 test-mq-qrefresh.t
378 378 test-mq-qrename.t
379 379 test-mq-qsave.t
380 380 test-mq-safety.t
381 381 test-mq-subrepo.t
382 382 test-mq-symlinks.t
383 383 test-mq.t
384 384 test-mv-cp-st-diff.t
385 385 test-narrow-acl.t
386 386 test-narrow-archive.t
387 387 test-narrow-clone-no-ellipsis.t
388 388 test-narrow-clone-non-narrow-server.t
389 389 test-narrow-clone-nonlinear.t
390 390 test-narrow-clone-stream.t
391 391 test-narrow-clone.t
392 392 test-narrow-commit.t
393 393 test-narrow-copies.t
394 394 test-narrow-debugcommands.t
395 395 test-narrow-debugrebuilddirstate.t
396 396 test-narrow-exchange-merges.t
397 397 test-narrow-exchange.t
398 398 test-narrow-expanddirstate.t
399 399 test-narrow-merge.t
400 400 test-narrow-patch.t
401 401 test-narrow-patterns.t
402 402 test-narrow-pull.t
403 403 test-narrow-rebase.t
404 404 test-narrow-shallow-merges.t
405 405 test-narrow-shallow.t
406 406 test-narrow-strip.t
407 407 test-narrow-trackedcmd.t
408 408 test-narrow-update.t
409 409 test-narrow-widen-no-ellipsis.t
410 410 test-narrow-widen.t
411 411 test-narrow.t
412 412 test-nested-repo.t
413 413 test-newbranch.t
414 414 test-newercgi.t
415 415 test-nointerrupt.t
416 416 test-obshistory.t
417 417 test-obsmarker-template.t
418 418 test-obsmarkers-effectflag.t
419 419 test-obsolete-bounds-checking.t
420 420 test-obsolete-bundle-strip.t
421 421 test-obsolete-changeset-exchange.t
422 422 test-obsolete-checkheads.t
423 423 test-obsolete-distributed.t
424 424 test-obsolete-divergent.t
425 425 test-obsolete-tag-cache.t
426 426 test-obsolete.t
427 427 test-origbackup-conflict.t
428 428 test-pager-legacy.t
429 429 test-pager.t
430 430 test-parents.t
431 431 test-parse-date.t
432 432 test-parseindex2.py
433 433 test-patch-offset.t
434 434 test-patch.t
435 435 test-patchbomb-bookmark.t
436 436 test-patchbomb-tls.t
437 437 test-patchbomb.t
438 438 test-pathconflicts-basic.t
439 439 test-pathconflicts-merge.t
440 440 test-pathconflicts-update.t
441 441 test-pathencode.py
442 442 test-pending.t
443 443 test-permissions.t
444 444 test-phases-exchange.t
445 445 test-phases.t
446 446 test-profile.t
447 447 test-progress.t
448 448 test-propertycache.py
449 449 test-pull-branch.t
450 450 test-pull-http.t
451 451 test-pull-permission.t
452 452 test-pull-pull-corruption.t
453 453 test-pull-r.t
454 454 test-pull-update.t
455 455 test-pull.t
456 456 test-purge.t
457 457 test-push-cgi.t
458 458 test-push-checkheads-partial-C1.t
459 459 test-push-checkheads-partial-C2.t
460 460 test-push-checkheads-partial-C3.t
461 461 test-push-checkheads-partial-C4.t
462 462 test-push-checkheads-pruned-B1.t
463 463 test-push-checkheads-pruned-B2.t
464 464 test-push-checkheads-pruned-B3.t
465 465 test-push-checkheads-pruned-B4.t
466 466 test-push-checkheads-pruned-B5.t
467 467 test-push-checkheads-pruned-B6.t
468 468 test-push-checkheads-pruned-B7.t
469 469 test-push-checkheads-pruned-B8.t
470 470 test-push-checkheads-superceed-A1.t
471 471 test-push-checkheads-superceed-A2.t
472 472 test-push-checkheads-superceed-A3.t
473 473 test-push-checkheads-superceed-A4.t
474 474 test-push-checkheads-superceed-A5.t
475 475 test-push-checkheads-superceed-A6.t
476 476 test-push-checkheads-superceed-A7.t
477 477 test-push-checkheads-superceed-A8.t
478 478 test-push-checkheads-unpushed-D1.t
479 479 test-push-checkheads-unpushed-D2.t
480 480 test-push-checkheads-unpushed-D3.t
481 481 test-push-checkheads-unpushed-D4.t
482 482 test-push-checkheads-unpushed-D5.t
483 483 test-push-checkheads-unpushed-D6.t
484 484 test-push-checkheads-unpushed-D7.t
485 485 test-push-http.t
486 test-push-race.t
486 487 test-push-warn.t
487 488 test-push.t
488 489 test-pushvars.t
489 490 test-qrecord.t
490 491 test-rebase-abort.t
491 492 test-rebase-backup.t
492 493 test-rebase-base-flag.t
493 494 test-rebase-bookmarks.t
494 495 test-rebase-brute-force.t
495 496 test-rebase-cache.t
496 497 test-rebase-check-restore.t
497 498 test-rebase-collapse.t
498 499 test-rebase-conflicts.t
499 500 test-rebase-dest.t
500 501 test-rebase-detach.t
501 502 test-rebase-emptycommit.t
502 503 test-rebase-inmemory.t
503 504 test-rebase-interruptions.t
504 505 test-rebase-issue-noparam-single-rev.t
505 506 test-rebase-legacy.t
506 507 test-rebase-mq-skip.t
507 508 test-rebase-mq.t
508 509 test-rebase-named-branches.t
509 510 test-rebase-newancestor.t
510 511 test-rebase-obsolete.t
511 512 test-rebase-parameters.t
512 513 test-rebase-partial.t
513 514 test-rebase-pull.t
514 515 test-rebase-rename.t
515 516 test-rebase-scenario-global.t
516 517 test-rebase-templates.t
517 518 test-rebase-transaction.t
518 519 test-rebuildstate.t
519 520 test-record.t
520 521 test-releasenotes-formatting.t
521 522 test-releasenotes-merging.t
522 523 test-releasenotes-parsing.t
523 524 test-relink.t
524 525 test-remotefilelog-bad-configs.t
525 526 test-remotefilelog-blame.t
526 527 test-remotefilelog-clone-tree.t
527 528 test-remotefilelog-clone.t
528 529 test-remotefilelog-keepset.t
529 530 test-remotefilelog-partial-shallow.t
530 531 test-remotefilelog-prefetch.t
531 532 test-remotefilelog-share.t
532 533 test-remotefilelog-tags.t
533 534 test-remove.t
534 535 test-removeemptydirs.t
535 536 test-rename-after-merge.t
536 537 test-rename-dir-merge.t
537 538 test-rename-merge1.t
538 539 test-rename-merge2.t
539 540 test-rename.t
540 541 test-repair-strip.t
541 542 test-repo-compengines.t
542 543 test-requires.t
543 544 test-resolve.t
544 545 test-revert-flags.t
545 546 test-revert-interactive.t
546 547 test-revert-unknown.t
547 548 test-revert.t
548 549 test-revisions.t
549 550 test-revlog-ancestry.py
550 551 test-revlog-group-emptyiter.t
551 552 test-revlog-mmapindex.t
552 553 test-revlog-packentry.t
553 554 test-revlog-raw.py
554 555 test-revlog-v2.t
555 556 test-revlog.t
556 557 test-revset-dirstate-parents.t
557 558 test-revset-legacy-lookup.t
558 559 test-revset-outgoing.t
559 560 test-rollback.t
560 561 test-run-tests.py
561 562 test-run-tests.t
562 563 test-schemes.t
563 564 test-serve.t
564 565 test-setdiscovery.t
565 566 test-share.t
566 567 test-shelve.t
567 568 test-show-stack.t
568 569 test-show-work.t
569 570 test-show.t
570 571 test-simple-update.t
571 572 test-simplekeyvaluefile.py
572 573 test-simplemerge.py
573 574 test-single-head.t
574 575 test-sparse-clear.t
575 576 test-sparse-clone.t
576 577 test-sparse-import.t
577 578 test-sparse-merges.t
578 579 test-sparse-profiles.t
579 580 test-sparse-requirement.t
580 581 test-sparse-verbose-json.t
581 582 test-sparse.t
582 583 test-split.t
583 584 test-ssh-bundle1.t
584 585 test-ssh-clone-r.t
585 586 test-ssh-proto-unbundle.t
586 587 test-ssh-proto.t
587 588 test-ssh-repoerror.t
588 589 test-ssh.t
589 590 test-sshserver.py
590 591 test-stack.t
591 592 test-status-color.t
592 593 test-status-inprocess.py
593 594 test-status-rev.t
594 595 test-status-terse.t
595 596 test-status.t
596 597 test-storage.py
597 598 test-stream-bundle-v2.t
598 599 test-strict.t
599 600 test-strip-cross.t
600 601 test-strip.t
601 602 test-subrepo-deep-nested-change.t
602 603 test-subrepo-missing.t
603 604 test-subrepo-paths.t
604 605 test-subrepo-recursion.t
605 606 test-subrepo-relative-path.t
606 607 test-subrepo.t
607 608 test-symlink-os-yes-fs-no.py
608 609 test-symlink-placeholder.t
609 610 test-symlinks.t
610 611 test-tag.t
611 612 test-tags.t
612 613 test-template-basic.t
613 614 test-template-functions.t
614 615 test-template-keywords.t
615 616 test-template-map.t
616 617 test-tools.t
617 618 test-transplant.t
618 619 test-treemanifest.t
619 620 test-ui-color.py
620 621 test-ui-config.py
621 622 test-ui-verbosity.py
622 623 test-unamend.t
623 624 test-unbundlehash.t
624 625 test-uncommit.t
625 626 test-unified-test.t
626 627 test-unionrepo.t
627 628 test-unrelated-pull.t
628 629 test-up-local-change.t
629 630 test-update-branches.t
630 631 test-update-dest.t
631 632 test-update-issue1456.t
632 633 test-update-names.t
633 634 test-update-reverse.t
634 635 test-upgrade-repo.t
635 636 test-url-download.t
636 637 test-url-rev.t
637 638 test-url.py
638 639 test-username-newline.t
639 640 test-util.py
640 641 test-verify.t
641 642 test-walk.t
642 643 test-walkrepo.py
643 644 test-websub.t
644 645 test-win32text.t
645 646 test-wireproto-clientreactor.py
646 647 test-wireproto-command-branchmap.t
647 648 test-wireproto-command-changesetdata.t
648 649 test-wireproto-command-filedata.t
649 650 test-wireproto-command-filesdata.t
650 651 test-wireproto-command-heads.t
651 652 test-wireproto-command-listkeys.t
652 653 test-wireproto-command-lookup.t
653 654 test-wireproto-command-manifestdata.t
654 655 test-wireproto-command-pushkey.t
655 656 test-wireproto-command-rawstorefiledata.t
656 657 test-wireproto-framing.py
657 658 test-wireproto-serverreactor.py
658 659 test-wireproto.py
659 660 test-wsgirequest.py
660 661 test-xdg.t
@@ -1,1892 +1,1892 b''
1 1 ============================================================================================
2 2 Test cases where there are race condition between two clients pushing to the same repository
3 3 ============================================================================================
4 4
5 5 This file tests cases where two clients push to a server at the same time. The
6 6 "raced" client is done preparing it push bundle when the "racing" client
7 7 perform its push. The "raced" client starts its actual push after the "racing"
8 8 client push is fully complete.
9 9
10 10 A set of extension and shell functions ensures this scheduling.
11 11
12 12 $ cat >> delaypush.py << EOF
13 13 > """small extension orchestrate push race
14 14 >
15 15 > Client with the extensions will create a file when ready and get stuck until
16 16 > a file is created."""
17 17 >
18 18 > import errno
19 19 > import os
20 20 > import time
21 21 >
22 22 > from mercurial import (
23 23 > exchange,
24 24 > extensions,
25 25 > registrar,
26 26 > )
27 27 >
28 28 > configtable = {}
29 29 > configitem = registrar.configitem(configtable)
30 30 >
31 > configitem('delaypush', 'ready-path',
31 > configitem(b'delaypush', b'ready-path',
32 32 > default=None,
33 33 > )
34 > configitem('delaypush', 'release-path',
34 > configitem(b'delaypush', b'release-path',
35 35 > default=None,
36 36 > )
37 37 >
38 38 > def delaypush(orig, pushop):
39 39 > # notify we are done preparing
40 40 > ui = pushop.repo.ui
41 > readypath = ui.config('delaypush', 'ready-path')
41 > readypath = ui.config(b'delaypush', b'ready-path')
42 42 > if readypath is not None:
43 43 > with open(readypath, 'w') as r:
44 44 > r.write('foo')
45 > ui.status('wrote ready: %s\n' % readypath)
45 > ui.status(b'wrote ready: %s\n' % readypath)
46 46 > # now wait for the other process to be done
47 > watchpath = ui.config('delaypush', 'release-path')
47 > watchpath = ui.config(b'delaypush', b'release-path')
48 48 > if watchpath is not None:
49 > ui.status('waiting on: %s\n' % watchpath)
49 > ui.status(b'waiting on: %s\n' % watchpath)
50 50 > limit = 100
51 51 > while 0 < limit and not os.path.exists(watchpath):
52 52 > limit -= 1
53 53 > time.sleep(0.1)
54 54 > if limit <= 0:
55 > ui.warn('exiting without watchfile: %s' % watchpath)
55 > ui.warn(b'exiting without watchfile: %s' % watchpath)
56 56 > else:
57 57 > # delete the file at the end of the push
58 58 > def delete():
59 59 > try:
60 60 > os.unlink(watchpath)
61 61 > except OSError as exc:
62 62 > if exc.errno != errno.ENOENT:
63 63 > raise
64 64 > ui.atexit(delete)
65 65 > return orig(pushop)
66 66 >
67 67 > def uisetup(ui):
68 > extensions.wrapfunction(exchange, '_pushbundle2', delaypush)
68 > extensions.wrapfunction(exchange, b'_pushbundle2', delaypush)
69 69 > EOF
70 70
71 71 $ waiton () {
72 72 > # wait for a file to be created (then delete it)
73 73 > count=100
74 74 > while [ ! -f $1 ] ;
75 75 > do
76 76 > sleep 0.1;
77 77 > count=`expr $count - 1`;
78 78 > if [ $count -lt 0 ];
79 79 > then
80 80 > break
81 81 > fi;
82 82 > done
83 83 > [ -f $1 ] || echo "ready file still missing: $1"
84 84 > rm -f $1
85 85 > }
86 86
87 87 $ release () {
88 88 > # create a file and wait for it be deleted
89 89 > count=100
90 90 > touch $1
91 91 > while [ -f $1 ] ;
92 92 > do
93 93 > sleep 0.1;
94 94 > count=`expr $count - 1`;
95 95 > if [ $count -lt 0 ];
96 96 > then
97 97 > break
98 98 > fi;
99 99 > done
100 100 > [ ! -f $1 ] || echo "delay file still exist: $1"
101 101 > }
102 102
103 103 $ cat >> $HGRCPATH << EOF
104 104 > [ui]
105 105 > ssh = "$PYTHON" "$TESTDIR/dummyssh"
106 106 > # simplify output
107 107 > logtemplate = {node|short} {desc} ({branch})
108 108 > [phases]
109 109 > publish = no
110 110 > [experimental]
111 111 > evolution=true
112 112 > [alias]
113 113 > graph = log -G --rev 'sort(all(), "topo")'
114 114 > EOF
115 115
116 116 We tests multiple cases:
117 117 * strict: no race detected,
118 118 * unrelated: race on unrelated heads are allowed.
119 119
120 120 #testcases strict unrelated
121 121
122 122 #if unrelated
123 123
124 124 $ cat >> $HGRCPATH << EOF
125 125 > [server]
126 126 > concurrent-push-mode = check-related
127 127 > EOF
128 128
129 129 #endif
130 130
131 131 Setup
132 132 -----
133 133
134 134 create a repo with one root
135 135
136 136 $ hg init server
137 137 $ cd server
138 138 $ echo root > root
139 139 $ hg ci -Am "C-ROOT"
140 140 adding root
141 141 $ cd ..
142 142
143 143 clone it in two clients
144 144
145 145 $ hg clone ssh://user@dummy/server client-racy
146 146 requesting all changes
147 147 adding changesets
148 148 adding manifests
149 149 adding file changes
150 150 added 1 changesets with 1 changes to 1 files
151 151 new changesets 842e2fac6304 (1 drafts)
152 152 updating to branch default
153 153 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
154 154 $ hg clone ssh://user@dummy/server client-other
155 155 requesting all changes
156 156 adding changesets
157 157 adding manifests
158 158 adding file changes
159 159 added 1 changesets with 1 changes to 1 files
160 160 new changesets 842e2fac6304 (1 drafts)
161 161 updating to branch default
162 162 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
163 163
164 164 setup one to allow race on push
165 165
166 166 $ cat >> client-racy/.hg/hgrc << EOF
167 167 > [extensions]
168 168 > delaypush = $TESTTMP/delaypush.py
169 169 > [delaypush]
170 170 > ready-path = $TESTTMP/readyfile
171 171 > release-path = $TESTTMP/watchfile
172 172 > EOF
173 173
174 174 Simple race, both try to push to the server at the same time
175 175 ------------------------------------------------------------
176 176
177 177 Both try to replace the same head
178 178
179 179 # a
180 180 # | b
181 181 # |/
182 182 # *
183 183
184 184 Creating changesets
185 185
186 186 $ echo b > client-other/a
187 187 $ hg -R client-other/ add client-other/a
188 188 $ hg -R client-other/ commit -m "C-A"
189 189 $ echo b > client-racy/b
190 190 $ hg -R client-racy/ add client-racy/b
191 191 $ hg -R client-racy/ commit -m "C-B"
192 192
193 193 Pushing
194 194
195 195 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
196 196
197 197 $ waiton $TESTTMP/readyfile
198 198
199 199 $ hg -R client-other push -r 'tip'
200 200 pushing to ssh://user@dummy/server
201 201 searching for changes
202 202 remote: adding changesets
203 203 remote: adding manifests
204 204 remote: adding file changes
205 205 remote: added 1 changesets with 1 changes to 1 files
206 206
207 207 $ release $TESTTMP/watchfile
208 208
209 209 Check the result of the push
210 210
211 211 $ cat ./push-log
212 212 pushing to ssh://user@dummy/server
213 213 searching for changes
214 214 wrote ready: $TESTTMP/readyfile
215 215 waiting on: $TESTTMP/watchfile
216 216 abort: push failed:
217 217 'remote repository changed while pushing - please try again'
218 218
219 219 $ hg -R server graph
220 220 o 98217d5a1659 C-A (default)
221 221 |
222 222 @ 842e2fac6304 C-ROOT (default)
223 223
224 224
225 225 Pushing on two different heads
226 226 ------------------------------
227 227
228 228 Both try to replace a different head
229 229
230 230 # a b
231 231 # | |
232 232 # * *
233 233 # |/
234 234 # *
235 235
236 236 (resync-all)
237 237
238 238 $ hg -R ./server pull ./client-racy
239 239 pulling from ./client-racy
240 240 searching for changes
241 241 adding changesets
242 242 adding manifests
243 243 adding file changes
244 244 added 1 changesets with 1 changes to 1 files (+1 heads)
245 245 new changesets a9149a1428e2 (1 drafts)
246 246 (run 'hg heads' to see heads, 'hg merge' to merge)
247 247 $ hg -R ./client-other pull
248 248 pulling from ssh://user@dummy/server
249 249 searching for changes
250 250 adding changesets
251 251 adding manifests
252 252 adding file changes
253 253 added 1 changesets with 1 changes to 1 files (+1 heads)
254 254 new changesets a9149a1428e2 (1 drafts)
255 255 (run 'hg heads' to see heads, 'hg merge' to merge)
256 256 $ hg -R ./client-racy pull
257 257 pulling from ssh://user@dummy/server
258 258 searching for changes
259 259 adding changesets
260 260 adding manifests
261 261 adding file changes
262 262 added 1 changesets with 1 changes to 1 files (+1 heads)
263 263 new changesets 98217d5a1659 (1 drafts)
264 264 (run 'hg heads' to see heads, 'hg merge' to merge)
265 265
266 266 $ hg -R server graph
267 267 o a9149a1428e2 C-B (default)
268 268 |
269 269 | o 98217d5a1659 C-A (default)
270 270 |/
271 271 @ 842e2fac6304 C-ROOT (default)
272 272
273 273
274 274 Creating changesets
275 275
276 276 $ echo aa >> client-other/a
277 277 $ hg -R client-other/ commit -m "C-C"
278 278 $ echo bb >> client-racy/b
279 279 $ hg -R client-racy/ commit -m "C-D"
280 280
281 281 Pushing
282 282
283 283 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
284 284
285 285 $ waiton $TESTTMP/readyfile
286 286
287 287 $ hg -R client-other push -r 'tip'
288 288 pushing to ssh://user@dummy/server
289 289 searching for changes
290 290 remote: adding changesets
291 291 remote: adding manifests
292 292 remote: adding file changes
293 293 remote: added 1 changesets with 1 changes to 1 files
294 294
295 295 $ release $TESTTMP/watchfile
296 296
297 297 Check the result of the push
298 298
299 299 #if strict
300 300 $ cat ./push-log
301 301 pushing to ssh://user@dummy/server
302 302 searching for changes
303 303 wrote ready: $TESTTMP/readyfile
304 304 waiting on: $TESTTMP/watchfile
305 305 abort: push failed:
306 306 'remote repository changed while pushing - please try again'
307 307
308 308 $ hg -R server graph
309 309 o 51c544a58128 C-C (default)
310 310 |
311 311 o 98217d5a1659 C-A (default)
312 312 |
313 313 | o a9149a1428e2 C-B (default)
314 314 |/
315 315 @ 842e2fac6304 C-ROOT (default)
316 316
317 317 #endif
318 318 #if unrelated
319 319
320 320 (The two heads are unrelated, push should be allowed)
321 321
322 322 $ cat ./push-log
323 323 pushing to ssh://user@dummy/server
324 324 searching for changes
325 325 wrote ready: $TESTTMP/readyfile
326 326 waiting on: $TESTTMP/watchfile
327 327 remote: adding changesets
328 328 remote: adding manifests
329 329 remote: adding file changes
330 330 remote: added 1 changesets with 1 changes to 1 files
331 331
332 332 $ hg -R server graph
333 333 o 59e76faf78bd C-D (default)
334 334 |
335 335 o a9149a1428e2 C-B (default)
336 336 |
337 337 | o 51c544a58128 C-C (default)
338 338 | |
339 339 | o 98217d5a1659 C-A (default)
340 340 |/
341 341 @ 842e2fac6304 C-ROOT (default)
342 342
343 343 #endif
344 344
345 345 Pushing while someone creates a new head
346 346 -----------------------------------------
347 347
348 348 Pushing a new changeset while someone creates a new branch.
349 349
350 350 # a (raced)
351 351 # |
352 352 # * b
353 353 # |/
354 354 # *
355 355
356 356 (resync-all)
357 357
358 358 #if strict
359 359
360 360 $ hg -R ./server pull ./client-racy
361 361 pulling from ./client-racy
362 362 searching for changes
363 363 adding changesets
364 364 adding manifests
365 365 adding file changes
366 366 added 1 changesets with 1 changes to 1 files
367 367 new changesets 59e76faf78bd (1 drafts)
368 368 (run 'hg update' to get a working copy)
369 369
370 370 #endif
371 371 #if unrelated
372 372
373 373 $ hg -R ./server pull ./client-racy
374 374 pulling from ./client-racy
375 375 searching for changes
376 376 no changes found
377 377
378 378 #endif
379 379
380 380 $ hg -R ./client-other pull
381 381 pulling from ssh://user@dummy/server
382 382 searching for changes
383 383 adding changesets
384 384 adding manifests
385 385 adding file changes
386 386 added 1 changesets with 1 changes to 1 files
387 387 new changesets 59e76faf78bd (1 drafts)
388 388 (run 'hg update' to get a working copy)
389 389 $ hg -R ./client-racy pull
390 390 pulling from ssh://user@dummy/server
391 391 searching for changes
392 392 adding changesets
393 393 adding manifests
394 394 adding file changes
395 395 added 1 changesets with 1 changes to 1 files
396 396 new changesets 51c544a58128 (1 drafts)
397 397 (run 'hg update' to get a working copy)
398 398
399 399 $ hg -R server graph
400 400 o 59e76faf78bd C-D (default)
401 401 |
402 402 o a9149a1428e2 C-B (default)
403 403 |
404 404 | o 51c544a58128 C-C (default)
405 405 | |
406 406 | o 98217d5a1659 C-A (default)
407 407 |/
408 408 @ 842e2fac6304 C-ROOT (default)
409 409
410 410
411 411 Creating changesets
412 412
413 413 (new head)
414 414
415 415 $ hg -R client-other/ up 'desc("C-A")'
416 416 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
417 417 $ echo aaa >> client-other/a
418 418 $ hg -R client-other/ commit -m "C-E"
419 419 created new head
420 420
421 421 (children of existing head)
422 422
423 423 $ hg -R client-racy/ up 'desc("C-C")'
424 424 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
425 425 $ echo bbb >> client-racy/a
426 426 $ hg -R client-racy/ commit -m "C-F"
427 427
428 428 Pushing
429 429
430 430 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
431 431
432 432 $ waiton $TESTTMP/readyfile
433 433
434 434 $ hg -R client-other push -fr 'tip'
435 435 pushing to ssh://user@dummy/server
436 436 searching for changes
437 437 remote: adding changesets
438 438 remote: adding manifests
439 439 remote: adding file changes
440 440 remote: added 1 changesets with 1 changes to 1 files (+1 heads)
441 441
442 442 $ release $TESTTMP/watchfile
443 443
444 444 Check the result of the push
445 445
446 446 #if strict
447 447
448 448 $ cat ./push-log
449 449 pushing to ssh://user@dummy/server
450 450 searching for changes
451 451 wrote ready: $TESTTMP/readyfile
452 452 waiting on: $TESTTMP/watchfile
453 453 abort: push failed:
454 454 'remote repository changed while pushing - please try again'
455 455
456 456 $ hg -R server graph
457 457 o d603e2c0cdd7 C-E (default)
458 458 |
459 459 | o 51c544a58128 C-C (default)
460 460 |/
461 461 o 98217d5a1659 C-A (default)
462 462 |
463 463 | o 59e76faf78bd C-D (default)
464 464 | |
465 465 | o a9149a1428e2 C-B (default)
466 466 |/
467 467 @ 842e2fac6304 C-ROOT (default)
468 468
469 469
470 470 #endif
471 471
472 472 #if unrelated
473 473
474 474 (The racing new head do not affect existing heads, push should go through)
475 475
476 476 $ cat ./push-log
477 477 pushing to ssh://user@dummy/server
478 478 searching for changes
479 479 wrote ready: $TESTTMP/readyfile
480 480 waiting on: $TESTTMP/watchfile
481 481 remote: adding changesets
482 482 remote: adding manifests
483 483 remote: adding file changes
484 484 remote: added 1 changesets with 1 changes to 1 files
485 485
486 486 $ hg -R server graph
487 487 o d9e379a8c432 C-F (default)
488 488 |
489 489 o 51c544a58128 C-C (default)
490 490 |
491 491 | o d603e2c0cdd7 C-E (default)
492 492 |/
493 493 o 98217d5a1659 C-A (default)
494 494 |
495 495 | o 59e76faf78bd C-D (default)
496 496 | |
497 497 | o a9149a1428e2 C-B (default)
498 498 |/
499 499 @ 842e2fac6304 C-ROOT (default)
500 500
501 501 #endif
502 502
503 503 Pushing touching different named branch (same topo): new branch raced
504 504 ---------------------------------------------------------------------
505 505
506 506 Pushing two children on the same head, one is a different named branch
507 507
508 508 # a (raced, branch-a)
509 509 # |
510 510 # | b (default branch)
511 511 # |/
512 512 # *
513 513
514 514 (resync-all)
515 515
516 516 #if strict
517 517
518 518 $ hg -R ./server pull ./client-racy
519 519 pulling from ./client-racy
520 520 searching for changes
521 521 adding changesets
522 522 adding manifests
523 523 adding file changes
524 524 added 1 changesets with 1 changes to 1 files
525 525 new changesets d9e379a8c432 (1 drafts)
526 526 (run 'hg update' to get a working copy)
527 527
528 528 #endif
529 529 #if unrelated
530 530
531 531 $ hg -R ./server pull ./client-racy
532 532 pulling from ./client-racy
533 533 searching for changes
534 534 no changes found
535 535
536 536 #endif
537 537
538 538 $ hg -R ./client-other pull
539 539 pulling from ssh://user@dummy/server
540 540 searching for changes
541 541 adding changesets
542 542 adding manifests
543 543 adding file changes
544 544 added 1 changesets with 1 changes to 1 files
545 545 new changesets d9e379a8c432 (1 drafts)
546 546 (run 'hg update' to get a working copy)
547 547 $ hg -R ./client-racy pull
548 548 pulling from ssh://user@dummy/server
549 549 searching for changes
550 550 adding changesets
551 551 adding manifests
552 552 adding file changes
553 553 added 1 changesets with 1 changes to 1 files (+1 heads)
554 554 new changesets d603e2c0cdd7 (1 drafts)
555 555 (run 'hg heads .' to see heads, 'hg merge' to merge)
556 556
557 557 $ hg -R server graph
558 558 o d9e379a8c432 C-F (default)
559 559 |
560 560 o 51c544a58128 C-C (default)
561 561 |
562 562 | o d603e2c0cdd7 C-E (default)
563 563 |/
564 564 o 98217d5a1659 C-A (default)
565 565 |
566 566 | o 59e76faf78bd C-D (default)
567 567 | |
568 568 | o a9149a1428e2 C-B (default)
569 569 |/
570 570 @ 842e2fac6304 C-ROOT (default)
571 571
572 572
573 573 Creating changesets
574 574
575 575 (update existing head)
576 576
577 577 $ hg -R client-other/ up 'desc("C-F")'
578 578 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
579 579 $ echo aaa >> client-other/a
580 580 $ hg -R client-other/ commit -m "C-G"
581 581
582 582 (new named branch from that existing head)
583 583
584 584 $ hg -R client-racy/ up 'desc("C-F")'
585 585 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
586 586 $ echo bbb >> client-racy/a
587 587 $ hg -R client-racy/ branch my-first-test-branch
588 588 marked working directory as branch my-first-test-branch
589 589 (branches are permanent and global, did you want a bookmark?)
590 590 $ hg -R client-racy/ commit -m "C-H"
591 591
592 592 Pushing
593 593
594 594 $ hg -R client-racy push -r 'tip' --new-branch > ./push-log 2>&1 &
595 595
596 596 $ waiton $TESTTMP/readyfile
597 597
598 598 $ hg -R client-other push -fr 'tip'
599 599 pushing to ssh://user@dummy/server
600 600 searching for changes
601 601 remote: adding changesets
602 602 remote: adding manifests
603 603 remote: adding file changes
604 604 remote: added 1 changesets with 1 changes to 1 files
605 605
606 606 $ release $TESTTMP/watchfile
607 607
608 608 Check the result of the push
609 609
610 610 #if strict
611 611 $ cat ./push-log
612 612 pushing to ssh://user@dummy/server
613 613 searching for changes
614 614 wrote ready: $TESTTMP/readyfile
615 615 waiting on: $TESTTMP/watchfile
616 616 abort: push failed:
617 617 'remote repository changed while pushing - please try again'
618 618
619 619 $ hg -R server graph
620 620 o 75d69cba5402 C-G (default)
621 621 |
622 622 o d9e379a8c432 C-F (default)
623 623 |
624 624 o 51c544a58128 C-C (default)
625 625 |
626 626 | o d603e2c0cdd7 C-E (default)
627 627 |/
628 628 o 98217d5a1659 C-A (default)
629 629 |
630 630 | o 59e76faf78bd C-D (default)
631 631 | |
632 632 | o a9149a1428e2 C-B (default)
633 633 |/
634 634 @ 842e2fac6304 C-ROOT (default)
635 635
636 636 #endif
637 637 #if unrelated
638 638
639 639 (unrelated named branches are unrelated)
640 640
641 641 $ cat ./push-log
642 642 pushing to ssh://user@dummy/server
643 643 searching for changes
644 644 wrote ready: $TESTTMP/readyfile
645 645 waiting on: $TESTTMP/watchfile
646 646 remote: adding changesets
647 647 remote: adding manifests
648 648 remote: adding file changes
649 649 remote: added 1 changesets with 1 changes to 1 files (+1 heads)
650 650
651 651 $ hg -R server graph
652 652 o 833be552cfe6 C-H (my-first-test-branch)
653 653 |
654 654 | o 75d69cba5402 C-G (default)
655 655 |/
656 656 o d9e379a8c432 C-F (default)
657 657 |
658 658 o 51c544a58128 C-C (default)
659 659 |
660 660 | o d603e2c0cdd7 C-E (default)
661 661 |/
662 662 o 98217d5a1659 C-A (default)
663 663 |
664 664 | o 59e76faf78bd C-D (default)
665 665 | |
666 666 | o a9149a1428e2 C-B (default)
667 667 |/
668 668 @ 842e2fac6304 C-ROOT (default)
669 669
670 670 #endif
671 671
672 672 The racing new head do not affect existing heads, push should go through
673 673
674 674 pushing touching different named branch (same topo): old branch raced
675 675 ---------------------------------------------------------------------
676 676
677 677 Pushing two children on the same head, one is a different named branch
678 678
679 679 # a (raced, default-branch)
680 680 # |
681 681 # | b (new branch)
682 682 # |/
683 683 # * (default-branch)
684 684
685 685 (resync-all)
686 686
687 687 #if strict
688 688
689 689 $ hg -R ./server pull ./client-racy
690 690 pulling from ./client-racy
691 691 searching for changes
692 692 adding changesets
693 693 adding manifests
694 694 adding file changes
695 695 added 1 changesets with 1 changes to 1 files (+1 heads)
696 696 new changesets 833be552cfe6 (1 drafts)
697 697 (run 'hg heads .' to see heads, 'hg merge' to merge)
698 698
699 699 #endif
700 700 #if unrelated
701 701
702 702 $ hg -R ./server pull ./client-racy
703 703 pulling from ./client-racy
704 704 searching for changes
705 705 no changes found
706 706
707 707 #endif
708 708
709 709 $ hg -R ./client-other pull
710 710 pulling from ssh://user@dummy/server
711 711 searching for changes
712 712 adding changesets
713 713 adding manifests
714 714 adding file changes
715 715 added 1 changesets with 1 changes to 1 files (+1 heads)
716 716 new changesets 833be552cfe6 (1 drafts)
717 717 (run 'hg heads .' to see heads, 'hg merge' to merge)
718 718 $ hg -R ./client-racy pull
719 719 pulling from ssh://user@dummy/server
720 720 searching for changes
721 721 adding changesets
722 722 adding manifests
723 723 adding file changes
724 724 added 1 changesets with 1 changes to 1 files (+1 heads)
725 725 new changesets 75d69cba5402 (1 drafts)
726 726 (run 'hg heads' to see heads)
727 727
728 728 $ hg -R server graph
729 729 o 833be552cfe6 C-H (my-first-test-branch)
730 730 |
731 731 | o 75d69cba5402 C-G (default)
732 732 |/
733 733 o d9e379a8c432 C-F (default)
734 734 |
735 735 o 51c544a58128 C-C (default)
736 736 |
737 737 | o d603e2c0cdd7 C-E (default)
738 738 |/
739 739 o 98217d5a1659 C-A (default)
740 740 |
741 741 | o 59e76faf78bd C-D (default)
742 742 | |
743 743 | o a9149a1428e2 C-B (default)
744 744 |/
745 745 @ 842e2fac6304 C-ROOT (default)
746 746
747 747
748 748 Creating changesets
749 749
750 750 (new named branch from one head)
751 751
752 752 $ hg -R client-other/ up 'desc("C-G")'
753 753 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
754 754 $ echo aaa >> client-other/a
755 755 $ hg -R client-other/ branch my-second-test-branch
756 756 marked working directory as branch my-second-test-branch
757 757 $ hg -R client-other/ commit -m "C-I"
758 758
759 759 (children "updating" that same head)
760 760
761 761 $ hg -R client-racy/ up 'desc("C-G")'
762 762 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
763 763 $ echo bbb >> client-racy/a
764 764 $ hg -R client-racy/ commit -m "C-J"
765 765
766 766 Pushing
767 767
768 768 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
769 769
770 770 $ waiton $TESTTMP/readyfile
771 771
772 772 $ hg -R client-other push -fr 'tip' --new-branch
773 773 pushing to ssh://user@dummy/server
774 774 searching for changes
775 775 remote: adding changesets
776 776 remote: adding manifests
777 777 remote: adding file changes
778 778 remote: added 1 changesets with 1 changes to 1 files
779 779
780 780 $ release $TESTTMP/watchfile
781 781
782 782 Check the result of the push
783 783
784 784 #if strict
785 785
786 786 $ cat ./push-log
787 787 pushing to ssh://user@dummy/server
788 788 searching for changes
789 789 wrote ready: $TESTTMP/readyfile
790 790 waiting on: $TESTTMP/watchfile
791 791 abort: push failed:
792 792 'remote repository changed while pushing - please try again'
793 793
794 794 $ hg -R server graph
795 795 o b35ed749f288 C-I (my-second-test-branch)
796 796 |
797 797 o 75d69cba5402 C-G (default)
798 798 |
799 799 | o 833be552cfe6 C-H (my-first-test-branch)
800 800 |/
801 801 o d9e379a8c432 C-F (default)
802 802 |
803 803 o 51c544a58128 C-C (default)
804 804 |
805 805 | o d603e2c0cdd7 C-E (default)
806 806 |/
807 807 o 98217d5a1659 C-A (default)
808 808 |
809 809 | o 59e76faf78bd C-D (default)
810 810 | |
811 811 | o a9149a1428e2 C-B (default)
812 812 |/
813 813 @ 842e2fac6304 C-ROOT (default)
814 814
815 815
816 816 #endif
817 817
818 818 #if unrelated
819 819
820 820 (unrelated named branches are unrelated)
821 821
822 822 $ cat ./push-log
823 823 pushing to ssh://user@dummy/server
824 824 searching for changes
825 825 wrote ready: $TESTTMP/readyfile
826 826 waiting on: $TESTTMP/watchfile
827 827 remote: adding changesets
828 828 remote: adding manifests
829 829 remote: adding file changes
830 830 remote: added 1 changesets with 1 changes to 1 files (+1 heads)
831 831
832 832 $ hg -R server graph
833 833 o 89420bf00fae C-J (default)
834 834 |
835 835 | o b35ed749f288 C-I (my-second-test-branch)
836 836 |/
837 837 o 75d69cba5402 C-G (default)
838 838 |
839 839 | o 833be552cfe6 C-H (my-first-test-branch)
840 840 |/
841 841 o d9e379a8c432 C-F (default)
842 842 |
843 843 o 51c544a58128 C-C (default)
844 844 |
845 845 | o d603e2c0cdd7 C-E (default)
846 846 |/
847 847 o 98217d5a1659 C-A (default)
848 848 |
849 849 | o 59e76faf78bd C-D (default)
850 850 | |
851 851 | o a9149a1428e2 C-B (default)
852 852 |/
853 853 @ 842e2fac6304 C-ROOT (default)
854 854
855 855
856 856 #endif
857 857
858 858 pushing racing push touch multiple heads
859 859 ----------------------------------------
860 860
861 861 There are multiple heads, but the racing push touch all of them
862 862
863 863 # a (raced)
864 864 # | b
865 865 # |/|
866 866 # * *
867 867 # |/
868 868 # *
869 869
870 870 (resync-all)
871 871
872 872 #if strict
873 873
874 874 $ hg -R ./server pull ./client-racy
875 875 pulling from ./client-racy
876 876 searching for changes
877 877 adding changesets
878 878 adding manifests
879 879 adding file changes
880 880 added 1 changesets with 1 changes to 1 files (+1 heads)
881 881 new changesets 89420bf00fae (1 drafts)
882 882 (run 'hg heads .' to see heads, 'hg merge' to merge)
883 883
884 884 #endif
885 885
886 886 #if unrelated
887 887
888 888 $ hg -R ./server pull ./client-racy
889 889 pulling from ./client-racy
890 890 searching for changes
891 891 no changes found
892 892
893 893 #endif
894 894
895 895 $ hg -R ./client-other pull
896 896 pulling from ssh://user@dummy/server
897 897 searching for changes
898 898 adding changesets
899 899 adding manifests
900 900 adding file changes
901 901 added 1 changesets with 1 changes to 1 files (+1 heads)
902 902 new changesets 89420bf00fae (1 drafts)
903 903 (run 'hg heads' to see heads)
904 904 $ hg -R ./client-racy pull
905 905 pulling from ssh://user@dummy/server
906 906 searching for changes
907 907 adding changesets
908 908 adding manifests
909 909 adding file changes
910 910 added 1 changesets with 1 changes to 1 files (+1 heads)
911 911 new changesets b35ed749f288 (1 drafts)
912 912 (run 'hg heads .' to see heads, 'hg merge' to merge)
913 913
914 914 $ hg -R server graph
915 915 o 89420bf00fae C-J (default)
916 916 |
917 917 | o b35ed749f288 C-I (my-second-test-branch)
918 918 |/
919 919 o 75d69cba5402 C-G (default)
920 920 |
921 921 | o 833be552cfe6 C-H (my-first-test-branch)
922 922 |/
923 923 o d9e379a8c432 C-F (default)
924 924 |
925 925 o 51c544a58128 C-C (default)
926 926 |
927 927 | o d603e2c0cdd7 C-E (default)
928 928 |/
929 929 o 98217d5a1659 C-A (default)
930 930 |
931 931 | o 59e76faf78bd C-D (default)
932 932 | |
933 933 | o a9149a1428e2 C-B (default)
934 934 |/
935 935 @ 842e2fac6304 C-ROOT (default)
936 936
937 937
938 938 Creating changesets
939 939
940 940 (merges heads)
941 941
942 942 $ hg -R client-other/ up 'desc("C-E")'
943 943 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
944 944 $ hg -R client-other/ merge 'desc("C-D")'
945 945 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
946 946 (branch merge, don't forget to commit)
947 947 $ hg -R client-other/ commit -m "C-K"
948 948
949 949 (update one head)
950 950
951 951 $ hg -R client-racy/ up 'desc("C-D")'
952 952 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
953 953 $ echo bbb >> client-racy/b
954 954 $ hg -R client-racy/ commit -m "C-L"
955 955
956 956 Pushing
957 957
958 958 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
959 959
960 960 $ waiton $TESTTMP/readyfile
961 961
962 962 $ hg -R client-other push -fr 'tip' --new-branch
963 963 pushing to ssh://user@dummy/server
964 964 searching for changes
965 965 remote: adding changesets
966 966 remote: adding manifests
967 967 remote: adding file changes
968 968 remote: added 1 changesets with 0 changes to 0 files (-1 heads)
969 969
970 970 $ release $TESTTMP/watchfile
971 971
972 972 Check the result of the push
973 973
974 974 $ cat ./push-log
975 975 pushing to ssh://user@dummy/server
976 976 searching for changes
977 977 wrote ready: $TESTTMP/readyfile
978 978 waiting on: $TESTTMP/watchfile
979 979 abort: push failed:
980 980 'remote repository changed while pushing - please try again'
981 981
982 982 $ hg -R server graph
983 983 o be705100c623 C-K (default)
984 984 |\
985 985 | o d603e2c0cdd7 C-E (default)
986 986 | |
987 987 o | 59e76faf78bd C-D (default)
988 988 | |
989 989 | | o 89420bf00fae C-J (default)
990 990 | | |
991 991 | | | o b35ed749f288 C-I (my-second-test-branch)
992 992 | | |/
993 993 | | o 75d69cba5402 C-G (default)
994 994 | | |
995 995 | | | o 833be552cfe6 C-H (my-first-test-branch)
996 996 | | |/
997 997 | | o d9e379a8c432 C-F (default)
998 998 | | |
999 999 | | o 51c544a58128 C-C (default)
1000 1000 | |/
1001 1001 o | a9149a1428e2 C-B (default)
1002 1002 | |
1003 1003 | o 98217d5a1659 C-A (default)
1004 1004 |/
1005 1005 @ 842e2fac6304 C-ROOT (default)
1006 1006
1007 1007
1008 1008 pushing raced push touch multiple heads
1009 1009 ---------------------------------------
1010 1010
1011 1011 There are multiple heads, the raced push touch all of them
1012 1012
1013 1013 # b
1014 1014 # | a (raced)
1015 1015 # |/|
1016 1016 # * *
1017 1017 # |/
1018 1018 # *
1019 1019
1020 1020 (resync-all)
1021 1021
1022 1022 $ hg -R ./server pull ./client-racy
1023 1023 pulling from ./client-racy
1024 1024 searching for changes
1025 1025 adding changesets
1026 1026 adding manifests
1027 1027 adding file changes
1028 1028 added 1 changesets with 1 changes to 1 files (+1 heads)
1029 1029 new changesets cac2cead0ff0 (1 drafts)
1030 1030 (run 'hg heads .' to see heads, 'hg merge' to merge)
1031 1031 $ hg -R ./client-other pull
1032 1032 pulling from ssh://user@dummy/server
1033 1033 searching for changes
1034 1034 adding changesets
1035 1035 adding manifests
1036 1036 adding file changes
1037 1037 added 1 changesets with 1 changes to 1 files (+1 heads)
1038 1038 new changesets cac2cead0ff0 (1 drafts)
1039 1039 (run 'hg heads .' to see heads, 'hg merge' to merge)
1040 1040 $ hg -R ./client-racy pull
1041 1041 pulling from ssh://user@dummy/server
1042 1042 searching for changes
1043 1043 adding changesets
1044 1044 adding manifests
1045 1045 adding file changes
1046 1046 added 1 changesets with 0 changes to 0 files
1047 1047 new changesets be705100c623 (1 drafts)
1048 1048 (run 'hg update' to get a working copy)
1049 1049
1050 1050 $ hg -R server graph
1051 1051 o cac2cead0ff0 C-L (default)
1052 1052 |
1053 1053 | o be705100c623 C-K (default)
1054 1054 |/|
1055 1055 | o d603e2c0cdd7 C-E (default)
1056 1056 | |
1057 1057 o | 59e76faf78bd C-D (default)
1058 1058 | |
1059 1059 | | o 89420bf00fae C-J (default)
1060 1060 | | |
1061 1061 | | | o b35ed749f288 C-I (my-second-test-branch)
1062 1062 | | |/
1063 1063 | | o 75d69cba5402 C-G (default)
1064 1064 | | |
1065 1065 | | | o 833be552cfe6 C-H (my-first-test-branch)
1066 1066 | | |/
1067 1067 | | o d9e379a8c432 C-F (default)
1068 1068 | | |
1069 1069 | | o 51c544a58128 C-C (default)
1070 1070 | |/
1071 1071 o | a9149a1428e2 C-B (default)
1072 1072 | |
1073 1073 | o 98217d5a1659 C-A (default)
1074 1074 |/
1075 1075 @ 842e2fac6304 C-ROOT (default)
1076 1076
1077 1077
1078 1078 Creating changesets
1079 1079
1080 1080 (update existing head)
1081 1081
1082 1082 $ echo aaa >> client-other/a
1083 1083 $ hg -R client-other/ commit -m "C-M"
1084 1084
1085 1085 (merge heads)
1086 1086
1087 1087 $ hg -R client-racy/ merge 'desc("C-K")'
1088 1088 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1089 1089 (branch merge, don't forget to commit)
1090 1090 $ hg -R client-racy/ commit -m "C-N"
1091 1091
1092 1092 Pushing
1093 1093
1094 1094 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
1095 1095
1096 1096 $ waiton $TESTTMP/readyfile
1097 1097
1098 1098 $ hg -R client-other push -fr 'tip' --new-branch
1099 1099 pushing to ssh://user@dummy/server
1100 1100 searching for changes
1101 1101 remote: adding changesets
1102 1102 remote: adding manifests
1103 1103 remote: adding file changes
1104 1104 remote: added 1 changesets with 1 changes to 1 files
1105 1105
1106 1106 $ release $TESTTMP/watchfile
1107 1107
1108 1108 Check the result of the push
1109 1109
1110 1110 $ cat ./push-log
1111 1111 pushing to ssh://user@dummy/server
1112 1112 searching for changes
1113 1113 wrote ready: $TESTTMP/readyfile
1114 1114 waiting on: $TESTTMP/watchfile
1115 1115 abort: push failed:
1116 1116 'remote repository changed while pushing - please try again'
1117 1117
1118 1118 $ hg -R server graph
1119 1119 o 6fd3090135df C-M (default)
1120 1120 |
1121 1121 o be705100c623 C-K (default)
1122 1122 |\
1123 1123 | o d603e2c0cdd7 C-E (default)
1124 1124 | |
1125 1125 +---o cac2cead0ff0 C-L (default)
1126 1126 | |
1127 1127 o | 59e76faf78bd C-D (default)
1128 1128 | |
1129 1129 | | o 89420bf00fae C-J (default)
1130 1130 | | |
1131 1131 | | | o b35ed749f288 C-I (my-second-test-branch)
1132 1132 | | |/
1133 1133 | | o 75d69cba5402 C-G (default)
1134 1134 | | |
1135 1135 | | | o 833be552cfe6 C-H (my-first-test-branch)
1136 1136 | | |/
1137 1137 | | o d9e379a8c432 C-F (default)
1138 1138 | | |
1139 1139 | | o 51c544a58128 C-C (default)
1140 1140 | |/
1141 1141 o | a9149a1428e2 C-B (default)
1142 1142 | |
1143 1143 | o 98217d5a1659 C-A (default)
1144 1144 |/
1145 1145 @ 842e2fac6304 C-ROOT (default)
1146 1146
1147 1147
1148 1148 racing commit push a new head behind another named branch
1149 1149 ---------------------------------------------------------
1150 1150
1151 1151 non-continuous branch are valid case, we tests for them.
1152 1152
1153 1153 # b (branch default)
1154 1154 # |
1155 1155 # o (branch foo)
1156 1156 # |
1157 1157 # | a (raced, branch default)
1158 1158 # |/
1159 1159 # * (branch foo)
1160 1160 # |
1161 1161 # * (branch default)
1162 1162
1163 1163 (resync-all + other branch)
1164 1164
1165 1165 $ hg -R ./server pull ./client-racy
1166 1166 pulling from ./client-racy
1167 1167 searching for changes
1168 1168 adding changesets
1169 1169 adding manifests
1170 1170 adding file changes
1171 1171 added 1 changesets with 0 changes to 0 files
1172 1172 new changesets 866a66e18630 (1 drafts)
1173 1173 (run 'hg update' to get a working copy)
1174 1174
1175 1175 (creates named branch on head)
1176 1176
1177 1177 $ hg -R ./server/ up 'desc("C-N")'
1178 1178 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1179 1179 $ hg -R ./server/ branch other
1180 1180 marked working directory as branch other
1181 1181 $ hg -R ./server/ ci -m "C-Z"
1182 1182 $ hg -R ./server/ up null
1183 1183 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
1184 1184
1185 1185 (sync client)
1186 1186
1187 1187 $ hg -R ./client-other pull
1188 1188 pulling from ssh://user@dummy/server
1189 1189 searching for changes
1190 1190 adding changesets
1191 1191 adding manifests
1192 1192 adding file changes
1193 1193 added 2 changesets with 0 changes to 0 files
1194 1194 new changesets 866a66e18630:55a6f1c01b48 (2 drafts)
1195 1195 (run 'hg update' to get a working copy)
1196 1196 $ hg -R ./client-racy pull
1197 1197 pulling from ssh://user@dummy/server
1198 1198 searching for changes
1199 1199 adding changesets
1200 1200 adding manifests
1201 1201 adding file changes
1202 1202 added 2 changesets with 1 changes to 1 files (+1 heads)
1203 1203 new changesets 6fd3090135df:55a6f1c01b48 (2 drafts)
1204 1204 (run 'hg heads .' to see heads, 'hg merge' to merge)
1205 1205
1206 1206 $ hg -R server graph
1207 1207 o 55a6f1c01b48 C-Z (other)
1208 1208 |
1209 1209 o 866a66e18630 C-N (default)
1210 1210 |\
1211 1211 +---o 6fd3090135df C-M (default)
1212 1212 | |
1213 1213 | o cac2cead0ff0 C-L (default)
1214 1214 | |
1215 1215 o | be705100c623 C-K (default)
1216 1216 |\|
1217 1217 o | d603e2c0cdd7 C-E (default)
1218 1218 | |
1219 1219 | o 59e76faf78bd C-D (default)
1220 1220 | |
1221 1221 | | o 89420bf00fae C-J (default)
1222 1222 | | |
1223 1223 | | | o b35ed749f288 C-I (my-second-test-branch)
1224 1224 | | |/
1225 1225 | | o 75d69cba5402 C-G (default)
1226 1226 | | |
1227 1227 | | | o 833be552cfe6 C-H (my-first-test-branch)
1228 1228 | | |/
1229 1229 | | o d9e379a8c432 C-F (default)
1230 1230 | | |
1231 1231 +---o 51c544a58128 C-C (default)
1232 1232 | |
1233 1233 | o a9149a1428e2 C-B (default)
1234 1234 | |
1235 1235 o | 98217d5a1659 C-A (default)
1236 1236 |/
1237 1237 o 842e2fac6304 C-ROOT (default)
1238 1238
1239 1239
1240 1240 Creating changesets
1241 1241
1242 1242 (update default head through another named branch one)
1243 1243
1244 1244 $ hg -R client-other/ up 'desc("C-Z")'
1245 1245 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1246 1246 $ echo aaa >> client-other/a
1247 1247 $ hg -R client-other/ commit -m "C-O"
1248 1248 $ echo aaa >> client-other/a
1249 1249 $ hg -R client-other/ branch --force default
1250 1250 marked working directory as branch default
1251 1251 $ hg -R client-other/ commit -m "C-P"
1252 1252 created new head
1253 1253
1254 1254 (update default head)
1255 1255
1256 1256 $ hg -R client-racy/ up 'desc("C-Z")'
1257 1257 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1258 1258 $ echo bbb >> client-other/a
1259 1259 $ hg -R client-racy/ branch --force default
1260 1260 marked working directory as branch default
1261 1261 $ hg -R client-racy/ commit -m "C-Q"
1262 1262 created new head
1263 1263
1264 1264 Pushing
1265 1265
1266 1266 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
1267 1267
1268 1268 $ waiton $TESTTMP/readyfile
1269 1269
1270 1270 $ hg -R client-other push -fr 'tip' --new-branch
1271 1271 pushing to ssh://user@dummy/server
1272 1272 searching for changes
1273 1273 remote: adding changesets
1274 1274 remote: adding manifests
1275 1275 remote: adding file changes
1276 1276 remote: added 2 changesets with 1 changes to 1 files
1277 1277
1278 1278 $ release $TESTTMP/watchfile
1279 1279
1280 1280 Check the result of the push
1281 1281
1282 1282 $ cat ./push-log
1283 1283 pushing to ssh://user@dummy/server
1284 1284 searching for changes
1285 1285 wrote ready: $TESTTMP/readyfile
1286 1286 waiting on: $TESTTMP/watchfile
1287 1287 abort: push failed:
1288 1288 'remote repository changed while pushing - please try again'
1289 1289
1290 1290 $ hg -R server graph
1291 1291 o 1b58ee3f79e5 C-P (default)
1292 1292 |
1293 1293 o d0a85b2252a9 C-O (other)
1294 1294 |
1295 1295 o 55a6f1c01b48 C-Z (other)
1296 1296 |
1297 1297 o 866a66e18630 C-N (default)
1298 1298 |\
1299 1299 +---o 6fd3090135df C-M (default)
1300 1300 | |
1301 1301 | o cac2cead0ff0 C-L (default)
1302 1302 | |
1303 1303 o | be705100c623 C-K (default)
1304 1304 |\|
1305 1305 o | d603e2c0cdd7 C-E (default)
1306 1306 | |
1307 1307 | o 59e76faf78bd C-D (default)
1308 1308 | |
1309 1309 | | o 89420bf00fae C-J (default)
1310 1310 | | |
1311 1311 | | | o b35ed749f288 C-I (my-second-test-branch)
1312 1312 | | |/
1313 1313 | | o 75d69cba5402 C-G (default)
1314 1314 | | |
1315 1315 | | | o 833be552cfe6 C-H (my-first-test-branch)
1316 1316 | | |/
1317 1317 | | o d9e379a8c432 C-F (default)
1318 1318 | | |
1319 1319 +---o 51c544a58128 C-C (default)
1320 1320 | |
1321 1321 | o a9149a1428e2 C-B (default)
1322 1322 | |
1323 1323 o | 98217d5a1659 C-A (default)
1324 1324 |/
1325 1325 o 842e2fac6304 C-ROOT (default)
1326 1326
1327 1327
1328 1328 raced commit push a new head behind another named branch
1329 1329 ---------------------------------------------------------
1330 1330
1331 1331 non-continuous branch are valid case, we tests for them.
1332 1332
1333 1333 # b (raced branch default)
1334 1334 # |
1335 1335 # o (branch foo)
1336 1336 # |
1337 1337 # | a (branch default)
1338 1338 # |/
1339 1339 # * (branch foo)
1340 1340 # |
1341 1341 # * (branch default)
1342 1342
1343 1343 (resync-all)
1344 1344
1345 1345 $ hg -R ./server pull ./client-racy
1346 1346 pulling from ./client-racy
1347 1347 searching for changes
1348 1348 adding changesets
1349 1349 adding manifests
1350 1350 adding file changes
1351 1351 added 1 changesets with 0 changes to 0 files (+1 heads)
1352 1352 new changesets b0ee3d6f51bc (1 drafts)
1353 1353 (run 'hg heads .' to see heads, 'hg merge' to merge)
1354 1354 $ hg -R ./client-other pull
1355 1355 pulling from ssh://user@dummy/server
1356 1356 searching for changes
1357 1357 adding changesets
1358 1358 adding manifests
1359 1359 adding file changes
1360 1360 added 1 changesets with 0 changes to 0 files (+1 heads)
1361 1361 new changesets b0ee3d6f51bc (1 drafts)
1362 1362 (run 'hg heads .' to see heads, 'hg merge' to merge)
1363 1363 $ hg -R ./client-racy pull
1364 1364 pulling from ssh://user@dummy/server
1365 1365 searching for changes
1366 1366 adding changesets
1367 1367 adding manifests
1368 1368 adding file changes
1369 1369 added 2 changesets with 1 changes to 1 files (+1 heads)
1370 1370 new changesets d0a85b2252a9:1b58ee3f79e5 (2 drafts)
1371 1371 (run 'hg heads .' to see heads, 'hg merge' to merge)
1372 1372
1373 1373 $ hg -R server graph
1374 1374 o b0ee3d6f51bc C-Q (default)
1375 1375 |
1376 1376 | o 1b58ee3f79e5 C-P (default)
1377 1377 | |
1378 1378 | o d0a85b2252a9 C-O (other)
1379 1379 |/
1380 1380 o 55a6f1c01b48 C-Z (other)
1381 1381 |
1382 1382 o 866a66e18630 C-N (default)
1383 1383 |\
1384 1384 +---o 6fd3090135df C-M (default)
1385 1385 | |
1386 1386 | o cac2cead0ff0 C-L (default)
1387 1387 | |
1388 1388 o | be705100c623 C-K (default)
1389 1389 |\|
1390 1390 o | d603e2c0cdd7 C-E (default)
1391 1391 | |
1392 1392 | o 59e76faf78bd C-D (default)
1393 1393 | |
1394 1394 | | o 89420bf00fae C-J (default)
1395 1395 | | |
1396 1396 | | | o b35ed749f288 C-I (my-second-test-branch)
1397 1397 | | |/
1398 1398 | | o 75d69cba5402 C-G (default)
1399 1399 | | |
1400 1400 | | | o 833be552cfe6 C-H (my-first-test-branch)
1401 1401 | | |/
1402 1402 | | o d9e379a8c432 C-F (default)
1403 1403 | | |
1404 1404 +---o 51c544a58128 C-C (default)
1405 1405 | |
1406 1406 | o a9149a1428e2 C-B (default)
1407 1407 | |
1408 1408 o | 98217d5a1659 C-A (default)
1409 1409 |/
1410 1410 o 842e2fac6304 C-ROOT (default)
1411 1411
1412 1412
1413 1413 Creating changesets
1414 1414
1415 1415 (update 'other' named branch head)
1416 1416
1417 1417 $ hg -R client-other/ up 'desc("C-P")'
1418 1418 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1419 1419 $ echo aaa >> client-other/a
1420 1420 $ hg -R client-other/ branch --force other
1421 1421 marked working directory as branch other
1422 1422 $ hg -R client-other/ commit -m "C-R"
1423 1423 created new head
1424 1424
1425 1425 (update 'other named brnach through a 'default' changeset')
1426 1426
1427 1427 $ hg -R client-racy/ up 'desc("C-P")'
1428 1428 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1429 1429 $ echo bbb >> client-racy/a
1430 1430 $ hg -R client-racy/ commit -m "C-S"
1431 1431 $ echo bbb >> client-racy/a
1432 1432 $ hg -R client-racy/ branch --force other
1433 1433 marked working directory as branch other
1434 1434 $ hg -R client-racy/ commit -m "C-T"
1435 1435 created new head
1436 1436
1437 1437 Pushing
1438 1438
1439 1439 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
1440 1440
1441 1441 $ waiton $TESTTMP/readyfile
1442 1442
1443 1443 $ hg -R client-other push -fr 'tip' --new-branch
1444 1444 pushing to ssh://user@dummy/server
1445 1445 searching for changes
1446 1446 remote: adding changesets
1447 1447 remote: adding manifests
1448 1448 remote: adding file changes
1449 1449 remote: added 1 changesets with 1 changes to 1 files
1450 1450
1451 1451 $ release $TESTTMP/watchfile
1452 1452
1453 1453 Check the result of the push
1454 1454
1455 1455 $ cat ./push-log
1456 1456 pushing to ssh://user@dummy/server
1457 1457 searching for changes
1458 1458 wrote ready: $TESTTMP/readyfile
1459 1459 waiting on: $TESTTMP/watchfile
1460 1460 abort: push failed:
1461 1461 'remote repository changed while pushing - please try again'
1462 1462
1463 1463 $ hg -R server graph
1464 1464 o de7b9e2ba3f6 C-R (other)
1465 1465 |
1466 1466 o 1b58ee3f79e5 C-P (default)
1467 1467 |
1468 1468 o d0a85b2252a9 C-O (other)
1469 1469 |
1470 1470 | o b0ee3d6f51bc C-Q (default)
1471 1471 |/
1472 1472 o 55a6f1c01b48 C-Z (other)
1473 1473 |
1474 1474 o 866a66e18630 C-N (default)
1475 1475 |\
1476 1476 +---o 6fd3090135df C-M (default)
1477 1477 | |
1478 1478 | o cac2cead0ff0 C-L (default)
1479 1479 | |
1480 1480 o | be705100c623 C-K (default)
1481 1481 |\|
1482 1482 o | d603e2c0cdd7 C-E (default)
1483 1483 | |
1484 1484 | o 59e76faf78bd C-D (default)
1485 1485 | |
1486 1486 | | o 89420bf00fae C-J (default)
1487 1487 | | |
1488 1488 | | | o b35ed749f288 C-I (my-second-test-branch)
1489 1489 | | |/
1490 1490 | | o 75d69cba5402 C-G (default)
1491 1491 | | |
1492 1492 | | | o 833be552cfe6 C-H (my-first-test-branch)
1493 1493 | | |/
1494 1494 | | o d9e379a8c432 C-F (default)
1495 1495 | | |
1496 1496 +---o 51c544a58128 C-C (default)
1497 1497 | |
1498 1498 | o a9149a1428e2 C-B (default)
1499 1499 | |
1500 1500 o | 98217d5a1659 C-A (default)
1501 1501 |/
1502 1502 o 842e2fac6304 C-ROOT (default)
1503 1503
1504 1504
1505 1505 raced commit push a new head obsoleting the one touched by the racing push
1506 1506 --------------------------------------------------------------------------
1507 1507
1508 1508 # b (racing)
1509 1509 # |
1510 1510 # ΓΈβ‡ β—” a (raced)
1511 1511 # |/
1512 1512 # *
1513 1513
1514 1514 (resync-all)
1515 1515
1516 1516 $ hg -R ./server pull ./client-racy
1517 1517 pulling from ./client-racy
1518 1518 searching for changes
1519 1519 adding changesets
1520 1520 adding manifests
1521 1521 adding file changes
1522 1522 added 2 changesets with 2 changes to 1 files (+1 heads)
1523 1523 new changesets 2efd43f7b5ba:3d57ed3c1091 (2 drafts)
1524 1524 (run 'hg heads .' to see heads, 'hg merge' to merge)
1525 1525 $ hg -R ./client-other pull
1526 1526 pulling from ssh://user@dummy/server
1527 1527 searching for changes
1528 1528 adding changesets
1529 1529 adding manifests
1530 1530 adding file changes
1531 1531 added 2 changesets with 2 changes to 1 files (+1 heads)
1532 1532 new changesets 2efd43f7b5ba:3d57ed3c1091 (2 drafts)
1533 1533 (run 'hg heads' to see heads, 'hg merge' to merge)
1534 1534 $ hg -R ./client-racy pull
1535 1535 pulling from ssh://user@dummy/server
1536 1536 searching for changes
1537 1537 adding changesets
1538 1538 adding manifests
1539 1539 adding file changes
1540 1540 added 1 changesets with 1 changes to 1 files (+1 heads)
1541 1541 new changesets de7b9e2ba3f6 (1 drafts)
1542 1542 (run 'hg heads' to see heads, 'hg merge' to merge)
1543 1543
1544 1544 $ hg -R server graph
1545 1545 o 3d57ed3c1091 C-T (other)
1546 1546 |
1547 1547 o 2efd43f7b5ba C-S (default)
1548 1548 |
1549 1549 | o de7b9e2ba3f6 C-R (other)
1550 1550 |/
1551 1551 o 1b58ee3f79e5 C-P (default)
1552 1552 |
1553 1553 o d0a85b2252a9 C-O (other)
1554 1554 |
1555 1555 | o b0ee3d6f51bc C-Q (default)
1556 1556 |/
1557 1557 o 55a6f1c01b48 C-Z (other)
1558 1558 |
1559 1559 o 866a66e18630 C-N (default)
1560 1560 |\
1561 1561 +---o 6fd3090135df C-M (default)
1562 1562 | |
1563 1563 | o cac2cead0ff0 C-L (default)
1564 1564 | |
1565 1565 o | be705100c623 C-K (default)
1566 1566 |\|
1567 1567 o | d603e2c0cdd7 C-E (default)
1568 1568 | |
1569 1569 | o 59e76faf78bd C-D (default)
1570 1570 | |
1571 1571 | | o 89420bf00fae C-J (default)
1572 1572 | | |
1573 1573 | | | o b35ed749f288 C-I (my-second-test-branch)
1574 1574 | | |/
1575 1575 | | o 75d69cba5402 C-G (default)
1576 1576 | | |
1577 1577 | | | o 833be552cfe6 C-H (my-first-test-branch)
1578 1578 | | |/
1579 1579 | | o d9e379a8c432 C-F (default)
1580 1580 | | |
1581 1581 +---o 51c544a58128 C-C (default)
1582 1582 | |
1583 1583 | o a9149a1428e2 C-B (default)
1584 1584 | |
1585 1585 o | 98217d5a1659 C-A (default)
1586 1586 |/
1587 1587 o 842e2fac6304 C-ROOT (default)
1588 1588
1589 1589
1590 1590 Creating changesets and markers
1591 1591
1592 1592 (continue existing head)
1593 1593
1594 1594 $ hg -R client-other/ up 'desc("C-Q")'
1595 1595 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1596 1596 $ echo aaa >> client-other/a
1597 1597 $ hg -R client-other/ commit -m "C-U"
1598 1598
1599 1599 (new topo branch obsoleting that same head)
1600 1600
1601 1601 $ hg -R client-racy/ up 'desc("C-Z")'
1602 1602 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1603 1603 $ echo bbb >> client-racy/a
1604 1604 $ hg -R client-racy/ branch --force default
1605 1605 marked working directory as branch default
1606 1606 $ hg -R client-racy/ commit -m "C-V"
1607 1607 created new head
1608 1608 $ ID_Q=`hg -R client-racy log -T '{node}\n' -r 'desc("C-Q")'`
1609 1609 $ ID_V=`hg -R client-racy log -T '{node}\n' -r 'desc("C-V")'`
1610 1610 $ hg -R client-racy debugobsolete $ID_Q $ID_V
1611 1611 obsoleted 1 changesets
1612 1612
1613 1613 Pushing
1614 1614
1615 1615 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
1616 1616
1617 1617 $ waiton $TESTTMP/readyfile
1618 1618
1619 1619 $ hg -R client-other push -fr 'tip' --new-branch
1620 1620 pushing to ssh://user@dummy/server
1621 1621 searching for changes
1622 1622 remote: adding changesets
1623 1623 remote: adding manifests
1624 1624 remote: adding file changes
1625 1625 remote: added 1 changesets with 0 changes to 0 files
1626 1626
1627 1627 $ release $TESTTMP/watchfile
1628 1628
1629 1629 Check the result of the push
1630 1630
1631 1631 $ cat ./push-log
1632 1632 pushing to ssh://user@dummy/server
1633 1633 searching for changes
1634 1634 wrote ready: $TESTTMP/readyfile
1635 1635 waiting on: $TESTTMP/watchfile
1636 1636 abort: push failed:
1637 1637 'remote repository changed while pushing - please try again'
1638 1638
1639 1639 $ hg -R server debugobsolete
1640 1640 $ hg -R server graph
1641 1641 o a98a47d8b85b C-U (default)
1642 1642 |
1643 1643 o b0ee3d6f51bc C-Q (default)
1644 1644 |
1645 1645 | o 3d57ed3c1091 C-T (other)
1646 1646 | |
1647 1647 | o 2efd43f7b5ba C-S (default)
1648 1648 | |
1649 1649 | | o de7b9e2ba3f6 C-R (other)
1650 1650 | |/
1651 1651 | o 1b58ee3f79e5 C-P (default)
1652 1652 | |
1653 1653 | o d0a85b2252a9 C-O (other)
1654 1654 |/
1655 1655 o 55a6f1c01b48 C-Z (other)
1656 1656 |
1657 1657 o 866a66e18630 C-N (default)
1658 1658 |\
1659 1659 +---o 6fd3090135df C-M (default)
1660 1660 | |
1661 1661 | o cac2cead0ff0 C-L (default)
1662 1662 | |
1663 1663 o | be705100c623 C-K (default)
1664 1664 |\|
1665 1665 o | d603e2c0cdd7 C-E (default)
1666 1666 | |
1667 1667 | o 59e76faf78bd C-D (default)
1668 1668 | |
1669 1669 | | o 89420bf00fae C-J (default)
1670 1670 | | |
1671 1671 | | | o b35ed749f288 C-I (my-second-test-branch)
1672 1672 | | |/
1673 1673 | | o 75d69cba5402 C-G (default)
1674 1674 | | |
1675 1675 | | | o 833be552cfe6 C-H (my-first-test-branch)
1676 1676 | | |/
1677 1677 | | o d9e379a8c432 C-F (default)
1678 1678 | | |
1679 1679 +---o 51c544a58128 C-C (default)
1680 1680 | |
1681 1681 | o a9149a1428e2 C-B (default)
1682 1682 | |
1683 1683 o | 98217d5a1659 C-A (default)
1684 1684 |/
1685 1685 o 842e2fac6304 C-ROOT (default)
1686 1686
1687 1687
1688 1688 racing commit push a new head obsoleting the one touched by the raced push
1689 1689 --------------------------------------------------------------------------
1690 1690
1691 1691 (mirror test case of the previous one
1692 1692
1693 1693 # a (raced branch default)
1694 1694 # |
1695 1695 # ΓΈβ‡ β—” b (racing)
1696 1696 # |/
1697 1697 # *
1698 1698
1699 1699 (resync-all)
1700 1700
1701 1701 $ hg -R ./server pull ./client-racy
1702 1702 pulling from ./client-racy
1703 1703 searching for changes
1704 1704 adding changesets
1705 1705 adding manifests
1706 1706 adding file changes
1707 1707 added 1 changesets with 1 changes to 1 files (+1 heads)
1708 1708 1 new obsolescence markers
1709 1709 obsoleted 1 changesets
1710 1710 1 new orphan changesets
1711 1711 new changesets 720c5163ecf6 (1 drafts)
1712 1712 (run 'hg heads .' to see heads, 'hg merge' to merge)
1713 1713 $ hg -R ./client-other pull
1714 1714 pulling from ssh://user@dummy/server
1715 1715 searching for changes
1716 1716 adding changesets
1717 1717 adding manifests
1718 1718 adding file changes
1719 1719 added 1 changesets with 1 changes to 1 files (+1 heads)
1720 1720 1 new obsolescence markers
1721 1721 obsoleted 1 changesets
1722 1722 1 new orphan changesets
1723 1723 new changesets 720c5163ecf6 (1 drafts)
1724 1724 (run 'hg heads .' to see heads, 'hg merge' to merge)
1725 1725 $ hg -R ./client-racy pull
1726 1726 pulling from ssh://user@dummy/server
1727 1727 searching for changes
1728 1728 adding changesets
1729 1729 adding manifests
1730 1730 adding file changes
1731 1731 added 1 changesets with 0 changes to 0 files
1732 1732 1 new orphan changesets
1733 1733 new changesets a98a47d8b85b (1 drafts)
1734 1734 (run 'hg update' to get a working copy)
1735 1735
1736 1736 $ hg -R server debugobsolete
1737 1737 b0ee3d6f51bc4c0ca6d4f2907708027a6c376233 720c5163ecf64dcc6216bee2d62bf3edb1882499 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
1738 1738 $ hg -R server graph
1739 1739 o 720c5163ecf6 C-V (default)
1740 1740 |
1741 1741 | * a98a47d8b85b C-U (default)
1742 1742 | |
1743 1743 | x b0ee3d6f51bc C-Q (default)
1744 1744 |/
1745 1745 | o 3d57ed3c1091 C-T (other)
1746 1746 | |
1747 1747 | o 2efd43f7b5ba C-S (default)
1748 1748 | |
1749 1749 | | o de7b9e2ba3f6 C-R (other)
1750 1750 | |/
1751 1751 | o 1b58ee3f79e5 C-P (default)
1752 1752 | |
1753 1753 | o d0a85b2252a9 C-O (other)
1754 1754 |/
1755 1755 o 55a6f1c01b48 C-Z (other)
1756 1756 |
1757 1757 o 866a66e18630 C-N (default)
1758 1758 |\
1759 1759 +---o 6fd3090135df C-M (default)
1760 1760 | |
1761 1761 | o cac2cead0ff0 C-L (default)
1762 1762 | |
1763 1763 o | be705100c623 C-K (default)
1764 1764 |\|
1765 1765 o | d603e2c0cdd7 C-E (default)
1766 1766 | |
1767 1767 | o 59e76faf78bd C-D (default)
1768 1768 | |
1769 1769 | | o 89420bf00fae C-J (default)
1770 1770 | | |
1771 1771 | | | o b35ed749f288 C-I (my-second-test-branch)
1772 1772 | | |/
1773 1773 | | o 75d69cba5402 C-G (default)
1774 1774 | | |
1775 1775 | | | o 833be552cfe6 C-H (my-first-test-branch)
1776 1776 | | |/
1777 1777 | | o d9e379a8c432 C-F (default)
1778 1778 | | |
1779 1779 +---o 51c544a58128 C-C (default)
1780 1780 | |
1781 1781 | o a9149a1428e2 C-B (default)
1782 1782 | |
1783 1783 o | 98217d5a1659 C-A (default)
1784 1784 |/
1785 1785 o 842e2fac6304 C-ROOT (default)
1786 1786
1787 1787
1788 1788 Creating changesets and markers
1789 1789
1790 1790 (new topo branch obsoleting that same head)
1791 1791
1792 1792 $ hg -R client-other/ up 'desc("C-Q")'
1793 1793 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1794 1794 $ echo bbb >> client-other/a
1795 1795 $ hg -R client-other/ branch --force default
1796 1796 marked working directory as branch default
1797 1797 $ hg -R client-other/ commit -m "C-W"
1798 1798 1 new orphan changesets
1799 1799 created new head
1800 1800 $ ID_V=`hg -R client-other log -T '{node}\n' -r 'desc("C-V")'`
1801 1801 $ ID_W=`hg -R client-other log -T '{node}\n' -r 'desc("C-W")'`
1802 1802 $ hg -R client-other debugobsolete $ID_V $ID_W
1803 1803 obsoleted 1 changesets
1804 1804
1805 1805 (continue the same head)
1806 1806
1807 1807 $ echo aaa >> client-racy/a
1808 1808 $ hg -R client-racy/ commit -m "C-X"
1809 1809
1810 1810 Pushing
1811 1811
1812 1812 $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 &
1813 1813
1814 1814 $ waiton $TESTTMP/readyfile
1815 1815
1816 1816 $ hg -R client-other push -fr 'tip' --new-branch
1817 1817 pushing to ssh://user@dummy/server
1818 1818 searching for changes
1819 1819 remote: adding changesets
1820 1820 remote: adding manifests
1821 1821 remote: adding file changes
1822 1822 remote: added 1 changesets with 0 changes to 1 files (+1 heads)
1823 1823 remote: 1 new obsolescence markers
1824 1824 remote: obsoleted 1 changesets
1825 1825 remote: 1 new orphan changesets
1826 1826
1827 1827 $ release $TESTTMP/watchfile
1828 1828
1829 1829 Check the result of the push
1830 1830
1831 1831 $ cat ./push-log
1832 1832 pushing to ssh://user@dummy/server
1833 1833 searching for changes
1834 1834 wrote ready: $TESTTMP/readyfile
1835 1835 waiting on: $TESTTMP/watchfile
1836 1836 abort: push failed:
1837 1837 'remote repository changed while pushing - please try again'
1838 1838
1839 1839 $ hg -R server debugobsolete
1840 1840 b0ee3d6f51bc4c0ca6d4f2907708027a6c376233 720c5163ecf64dcc6216bee2d62bf3edb1882499 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
1841 1841 720c5163ecf64dcc6216bee2d62bf3edb1882499 39bc0598afe90ab18da460bafecc0fa953b77596 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
1842 1842 $ hg -R server graph --hidden
1843 1843 * 39bc0598afe9 C-W (default)
1844 1844 |
1845 1845 | * a98a47d8b85b C-U (default)
1846 1846 |/
1847 1847 x b0ee3d6f51bc C-Q (default)
1848 1848 |
1849 1849 | o 3d57ed3c1091 C-T (other)
1850 1850 | |
1851 1851 | o 2efd43f7b5ba C-S (default)
1852 1852 | |
1853 1853 | | o de7b9e2ba3f6 C-R (other)
1854 1854 | |/
1855 1855 | o 1b58ee3f79e5 C-P (default)
1856 1856 | |
1857 1857 | o d0a85b2252a9 C-O (other)
1858 1858 |/
1859 1859 | x 720c5163ecf6 C-V (default)
1860 1860 |/
1861 1861 o 55a6f1c01b48 C-Z (other)
1862 1862 |
1863 1863 o 866a66e18630 C-N (default)
1864 1864 |\
1865 1865 +---o 6fd3090135df C-M (default)
1866 1866 | |
1867 1867 | o cac2cead0ff0 C-L (default)
1868 1868 | |
1869 1869 o | be705100c623 C-K (default)
1870 1870 |\|
1871 1871 o | d603e2c0cdd7 C-E (default)
1872 1872 | |
1873 1873 | o 59e76faf78bd C-D (default)
1874 1874 | |
1875 1875 | | o 89420bf00fae C-J (default)
1876 1876 | | |
1877 1877 | | | o b35ed749f288 C-I (my-second-test-branch)
1878 1878 | | |/
1879 1879 | | o 75d69cba5402 C-G (default)
1880 1880 | | |
1881 1881 | | | o 833be552cfe6 C-H (my-first-test-branch)
1882 1882 | | |/
1883 1883 | | o d9e379a8c432 C-F (default)
1884 1884 | | |
1885 1885 +---o 51c544a58128 C-C (default)
1886 1886 | |
1887 1887 | o a9149a1428e2 C-B (default)
1888 1888 | |
1889 1889 o | 98217d5a1659 C-A (default)
1890 1890 |/
1891 1891 o 842e2fac6304 C-ROOT (default)
1892 1892
General Comments 0
You need to be logged in to leave comments. Login now