|
|
============================================
|
|
|
Testing various race condition while pushing
|
|
|
============================================
|
|
|
|
|
|
$ cat << EOF >> $HGRCPATH
|
|
|
> [command-templates]
|
|
|
> log={rev}:{node|short} {desc|firstline} {bookmarks}
|
|
|
> [ui]
|
|
|
> timeout = 20
|
|
|
> [phases]
|
|
|
> publish=False
|
|
|
> EOF
|
|
|
|
|
|
Initial Setup
|
|
|
=============
|
|
|
|
|
|
$ hg init dst
|
|
|
$ echo a > dst/a-file
|
|
|
$ hg --cwd dst add a-file
|
|
|
$ hg --cwd dst commit -m root
|
|
|
$ hg --cwd dst bookmark my-book
|
|
|
$ hg --cwd dst bookmarks
|
|
|
* my-book 0:a64e49638499
|
|
|
$ hg --cwd dst log -G
|
|
|
@ 0:a64e49638499 root my-book
|
|
|
|
|
|
|
|
|
$ hg clone ssh://user@dummy/dst src
|
|
|
requesting all changes
|
|
|
adding changesets
|
|
|
adding manifests
|
|
|
adding file changes
|
|
|
added 1 changesets with 1 changes to 1 files
|
|
|
new changesets a64e49638499 (1 drafts)
|
|
|
updating to branch default
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
$ hg --cwd src update my-book
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
(activating bookmark my-book)
|
|
|
$ hg --cwd src log -G
|
|
|
@ 0:a64e49638499 root my-book
|
|
|
|
|
|
|
|
|
$ echo b > src/a-file
|
|
|
$ hg --cwd src commit -m cA0_
|
|
|
$ hg --cwd src log -G
|
|
|
@ 1:e89d3a6ed79b cA0_ my-book
|
|
|
|
|
|
|
o 0:a64e49638499 root
|
|
|
|
|
|
|
|
|
Race condition while pushing a forward moving bookmarks
|
|
|
=======================================================
|
|
|
|
|
|
This is currently slightly broken as we eventually don't push the bookmark.
|
|
|
However at least we do not delete the remote one.
|
|
|
|
|
|
$ echo c > src/a-file
|
|
|
$ hg --cwd src push -B my-book --config hooks.prelock="hg commit -m cA1_"
|
|
|
pushing to ssh://user@dummy/dst
|
|
|
searching for changes
|
|
|
remote: adding changesets
|
|
|
remote: adding manifests
|
|
|
remote: adding file changes
|
|
|
remote: added 1 changesets with 1 changes to 1 files
|
|
|
$ hg --cwd src log -G
|
|
|
@ 2:08d837bbfe8d cA1_ my-book
|
|
|
|
|
|
|
o 1:e89d3a6ed79b cA0_
|
|
|
|
|
|
|
o 0:a64e49638499 root
|
|
|
|
|
|
$ hg --cwd dst log -G
|
|
|
o 1:e89d3a6ed79b cA0_
|
|
|
|
|
|
|
@ 0:a64e49638499 root my-book
|
|
|
|
|
|
|
|
|
create a side-moving bookmark
|
|
|
Race condition while pushing a side moving bookmarks
|
|
|
=======================================================
|
|
|
|
|
|
resynchronize the repo and setup test
|
|
|
-------------------------------------
|
|
|
|
|
|
$ hg --cwd src push -B my-book
|
|
|
pushing to ssh://user@dummy/dst
|
|
|
searching for changes
|
|
|
remote: adding changesets
|
|
|
remote: adding manifests
|
|
|
remote: adding file changes
|
|
|
remote: added 1 changesets with 1 changes to 1 files
|
|
|
updating bookmark my-book
|
|
|
$ hg --cwd dst log -G
|
|
|
o 2:08d837bbfe8d cA1_ my-book
|
|
|
|
|
|
|
o 1:e89d3a6ed79b cA0_
|
|
|
|
|
|
|
@ 0:a64e49638499 root
|
|
|
|
|
|
|
|
|
$ hg --cwd src up 'desc("root")'
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
(leaving bookmark my-book)
|
|
|
$ echo d > src/a-file
|
|
|
$ hg --cwd src commit -m cB0_
|
|
|
created new head
|
|
|
$ hg --cwd src bookmark --force my-book
|
|
|
$ echo e > src/a-file
|
|
|
$ hg --cwd src log -G
|
|
|
@ 3:726401661fe5 cB0_ my-book
|
|
|
|
|
|
|
| o 2:08d837bbfe8d cA1_
|
|
|
| |
|
|
|
| o 1:e89d3a6ed79b cA0_
|
|
|
|/
|
|
|
o 0:a64e49638499 root
|
|
|
|
|
|
|
|
|
Push the bookmark while a commit is being made
|
|
|
----------------------------------------------
|
|
|
|
|
|
This is currently slightly broken as we eventually don't push the bookmark.
|
|
|
However at least we do not delete the remote one.
|
|
|
|
|
|
$ hg --cwd src push -f -r 'desc("cB0_")' -B my-book --config hooks.prelock="hg commit -m cB1_"
|
|
|
pushing to ssh://user@dummy/dst
|
|
|
searching for changes
|
|
|
remote: adding changesets
|
|
|
remote: adding manifests
|
|
|
remote: adding file changes
|
|
|
remote: added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
|
$ hg --cwd src log -G
|
|
|
@ 4:a7f9cbf631a0 cB1_ my-book
|
|
|
|
|
|
|
o 3:726401661fe5 cB0_
|
|
|
|
|
|
|
| o 2:08d837bbfe8d cA1_
|
|
|
| |
|
|
|
| o 1:e89d3a6ed79b cA0_
|
|
|
|/
|
|
|
o 0:a64e49638499 root
|
|
|
|
|
|
|
|
|
$ hg --cwd dst log -G
|
|
|
o 3:726401661fe5 cB0_
|
|
|
|
|
|
|
| o 2:08d837bbfe8d cA1_ my-book
|
|
|
| |
|
|
|
| o 1:e89d3a6ed79b cA0_
|
|
|
|/
|
|
|
@ 0:a64e49638499 root
|
|
|
|
|
|
|