Mercurial > hg-stable
changeset 32660:9234d2cb24a5
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.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 27 May 2017 22:27:41 +0200 |
parents | da5cf8cc5aad |
children | 4f6645ec6bb2 |
files | tests/test-push-race.t |
diffstat | 1 files changed, 177 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-push-race.t Sat May 27 22:27:09 2017 +0200 +++ b/tests/test-push-race.t Sat May 27 22:27:41 2017 +0200 @@ -895,3 +895,180 @@ |/ @ 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) +