# HG changeset patch # User Pierre-Yves David # Date 1495916829 -7200 # Node ID da5cf8cc5aad0f3a191df262586f63415ff79c18 # Parent 32c80d07952b43123f4d7e8ff368a236140e161a test: add a push race case where the raced push touch multiple heads We check case where the raced push update all heads while the racing push update one of them. diff -r 32c80d07952b -r da5cf8cc5aad tests/test-push-race.t --- a/tests/test-push-race.t Sat May 27 22:26:51 2017 +0200 +++ b/tests/test-push-race.t Sat May 27 22:27:09 2017 +0200 @@ -758,3 +758,140 @@ |/ @ 842e2fac6304 C-ROOT (default) + +pushing raced push touch multiple heads +--------------------------------------- + +There are multiple heads, the raced push touch all of them + +# b +# | a (raced) +# |/| +# * * +# |/ +# * + +(resync-all) + + $ hg -R ./server pull ./client-racy + pulling from ./client-racy + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + (run 'hg heads .' to see heads, 'hg merge' to merge) + $ hg -R ./client-other pull + pulling from ssh://user@dummy/server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + (run 'hg heads .' to see heads, 'hg merge' to merge) + $ hg -R ./client-racy pull + pulling from ssh://user@dummy/server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 0 changes to 0 files + (run 'hg update' to get a working copy) + + $ hg -R server graph + o cac2cead0ff0 C-L (default) + | + | o be705100c623 C-K (default) + |/| + | o d603e2c0cdd7 C-E (default) + | | + o | 59e76faf78bd C-D (default) + | | + | | o 89420bf00fae C-J (default) + | | | + | | | o b35ed749f288 C-I (my-second-test-branch) + | | |/ + | | o 75d69cba5402 C-G (default) + | | | + | | | o 833be552cfe6 C-H (my-first-test-branch) + | | |/ + | | o d9e379a8c432 C-F (default) + | | | + | | o 51c544a58128 C-C (default) + | |/ + o | a9149a1428e2 C-B (default) + | | + | o 98217d5a1659 C-A (default) + |/ + @ 842e2fac6304 C-ROOT (default) + + +Creating changesets + +(update existing head) + + $ echo aaa >> client-other/a + $ hg -R client-other/ commit -m "C-M" + +(merge heads) + + $ hg -R client-racy/ merge 'desc("C-K")' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg -R client-racy/ commit -m "C-N" + +Pushing + + $ hg -R client-racy push -r 'tip' > ./push-log 2>&1 & + + $ waiton $TESTTMP/readyfile + + $ hg -R client-other push -fr 'tip' --new-branch + pushing to ssh://user@dummy/server + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + + $ release $TESTTMP/watchfile + +Check the result of the push + + $ cat ./push-log + pushing to ssh://user@dummy/server + searching for changes + wrote ready: $TESTTMP/readyfile + waiting on: $TESTTMP/watchfile + abort: push failed: + 'repository changed while pushing - please try again' + + $ hg -R server graph + o 6fd3090135df C-M (default) + | + o be705100c623 C-K (default) + |\ + | o d603e2c0cdd7 C-E (default) + | | + +---o cac2cead0ff0 C-L (default) + | | + o | 59e76faf78bd C-D (default) + | | + | | o 89420bf00fae C-J (default) + | | | + | | | o b35ed749f288 C-I (my-second-test-branch) + | | |/ + | | o 75d69cba5402 C-G (default) + | | | + | | | o 833be552cfe6 C-H (my-first-test-branch) + | | |/ + | | o d9e379a8c432 C-F (default) + | | | + | | o 51c544a58128 C-C (default) + | |/ + o | a9149a1428e2 C-B (default) + | | + | o 98217d5a1659 C-A (default) + |/ + @ 842e2fac6304 C-ROOT (default) +