##// END OF EJS Templates
revlog: subclass the new `repository.iverifyproblem` Protocol class...
revlog: subclass the new `repository.iverifyproblem` Protocol class This is the same transformation as 3a90a6fd710d did for dirstate, but the CamelCase naming was already cleaned up here. We shouldn't have to explicitly subclass, but I'm doing so to test the interplay of regular attributes and the `attrs` class. Also, PyCharm has a nifty feature that puts a jump point in the gutter to navigate back and forth between the base class and subclasses (and override functions and base class functions) when there's an explicit subclassing. Additionally, PyCharm will immediately flag signature mismatches without a 40m pytype run.

File last commit:

r52529:553eb132 stable
r53365:4ef6dbc2 default
Show More
test-bookmarks-push-race.t
153 lines | 3.8 KiB | text/troff | Tads3Lexer
/ tests / test-bookmarks-push-race.t
bookmark: fix remote bookmark deletion when the push is raced...
r52529 ============================================
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