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.
--- 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)
+