test: add a push race case where non-contiguous branch head are created

We check case where the raced push an update to branch default head while the
racing push update that same head but through another named branch.
This commit is contained in:
Pierre-Yves David 2017-05-27 22:27:41 +02:00
parent 729522bea7
commit f372990b3a

View File

@ -895,3 +895,180 @@ Check the result of the push
|/
@ 842e2fac6304 C-ROOT (default)
racing commit push a new head behind another named branch
---------------------------------------------------------
non-continuous branch are valid case, we tests for them.
# b (branch default)
# |
# o (branch foo)
# |
# | a (raced, branch default)
# |/
# * (branch foo)
# |
# * (branch default)
(resync-all + other branch)
$ hg -R ./server pull ./client-racy
pulling from ./client-racy
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)
(creates named branch on head)
$ hg -R ./server/ up 'desc("C-N")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R ./server/ branch other
marked working directory as branch other
$ hg -R ./server/ ci -m "C-Z"
$ hg -R ./server/ up null
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
(sync client)
$ hg -R ./client-other pull
pulling from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 0 changes to 0 files
(run 'hg update' to get a working copy)
$ hg -R ./client-racy pull
pulling from ssh://user@dummy/server
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads .' to see heads, 'hg merge' to merge)
$ hg -R server graph
o 55a6f1c01b48 C-Z (other)
|
o 866a66e18630 C-N (default)
|\
+---o 6fd3090135df C-M (default)
| |
| 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)
|/
o 842e2fac6304 C-ROOT (default)
Creating changesets
(update default head through another named branch one)
$ hg -R client-other/ up 'desc("C-Z")'
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo aaa >> client-other/a
$ hg -R client-other/ commit -m "C-O"
$ echo aaa >> client-other/a
$ hg -R client-other/ branch --force default
marked working directory as branch default
$ hg -R client-other/ commit -m "C-P"
created new head
(update default head)
$ hg -R client-racy/ up 'desc("C-Z")'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo bbb >> client-other/a
$ hg -R client-racy/ branch --force default
marked working directory as branch default
$ hg -R client-racy/ commit -m "C-Q"
created new head
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 2 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 1b58ee3f79e5 C-P (default)
|
o d0a85b2252a9 C-O (other)
|
o 55a6f1c01b48 C-Z (other)
|
o 866a66e18630 C-N (default)
|\
+---o 6fd3090135df C-M (default)
| |
| 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)
|/
o 842e2fac6304 C-ROOT (default)