mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
d88bdb0452
This changeset only touch test. The previous test was correct, it tested that the successors of an old bookmark position was seen as a valid destination for bookmark. However, a newer version is made for two reason: (1) The new test check further. It check that the descendant of the successors is a valid destination (2) An ever more complexe test is needed to validate a future fix to issue 3680 Splitting complexification of the test and actual bugfix help to reduce the noise in the bugfix changeset. Issue 3680 is NOT fixed by this changeset.
382 lines
10 KiB
Raku
382 lines
10 KiB
Raku
$ "$TESTDIR/hghave" serve || exit 80
|
|
|
|
$ cat << EOF >> $HGRCPATH
|
|
> [ui]
|
|
> logtemplate={rev}:{node|short} {desc|firstline}
|
|
> [phases]
|
|
> publish=False
|
|
> [extensions]
|
|
> EOF
|
|
$ cat > obs.py << EOF
|
|
> import mercurial.obsolete
|
|
> mercurial.obsolete._enabled = True
|
|
> EOF
|
|
$ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
|
|
|
|
initialize
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
$ echo 'test' > test
|
|
$ hg commit -Am'test'
|
|
adding test
|
|
|
|
set bookmarks
|
|
|
|
$ hg bookmark X
|
|
$ hg bookmark Y
|
|
$ hg bookmark Z
|
|
|
|
import bookmark by name
|
|
|
|
$ hg init ../b
|
|
$ cd ../b
|
|
$ hg book Y
|
|
$ hg book
|
|
* Y -1:000000000000
|
|
$ hg pull ../a
|
|
pulling from ../a
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
updating bookmark Y
|
|
adding remote bookmark X
|
|
adding remote bookmark Z
|
|
(run 'hg update' to get a working copy)
|
|
$ hg bookmarks
|
|
X 0:4e3505fd9583
|
|
Y 0:4e3505fd9583
|
|
Z 0:4e3505fd9583
|
|
$ hg debugpushkey ../a namespaces
|
|
bookmarks
|
|
phases
|
|
namespaces
|
|
obsolete
|
|
$ hg debugpushkey ../a bookmarks
|
|
Y 4e3505fd95835d721066b76e75dbb8cc554d7f77
|
|
X 4e3505fd95835d721066b76e75dbb8cc554d7f77
|
|
Z 4e3505fd95835d721066b76e75dbb8cc554d7f77
|
|
$ hg pull -B X ../a
|
|
pulling from ../a
|
|
no changes found
|
|
importing bookmark X
|
|
$ hg bookmark
|
|
X 0:4e3505fd9583
|
|
Y 0:4e3505fd9583
|
|
Z 0:4e3505fd9583
|
|
|
|
export bookmark by name
|
|
|
|
$ hg bookmark W
|
|
$ hg bookmark foo
|
|
$ hg bookmark foobar
|
|
$ hg push -B W ../a
|
|
pushing to ../a
|
|
searching for changes
|
|
no changes found
|
|
exporting bookmark W
|
|
[1]
|
|
$ hg -R ../a bookmarks
|
|
W -1:000000000000
|
|
X 0:4e3505fd9583
|
|
Y 0:4e3505fd9583
|
|
* Z 0:4e3505fd9583
|
|
|
|
delete a remote bookmark
|
|
|
|
$ hg book -d W
|
|
$ hg push -B W ../a
|
|
pushing to ../a
|
|
searching for changes
|
|
no changes found
|
|
deleting remote bookmark W
|
|
[1]
|
|
|
|
push/pull name that doesn't exist
|
|
|
|
$ hg push -B badname ../a
|
|
pushing to ../a
|
|
searching for changes
|
|
no changes found
|
|
bookmark badname does not exist on the local or remote repository!
|
|
[2]
|
|
$ hg pull -B anotherbadname ../a
|
|
pulling from ../a
|
|
abort: remote bookmark anotherbadname not found!
|
|
[255]
|
|
|
|
divergent bookmarks
|
|
|
|
$ cd ../a
|
|
$ echo c1 > f1
|
|
$ hg ci -Am1
|
|
adding f1
|
|
$ hg book -f @
|
|
$ hg book -f X
|
|
$ hg book
|
|
@ 1:0d2164f0ce0d
|
|
* X 1:0d2164f0ce0d
|
|
Y 0:4e3505fd9583
|
|
Z 1:0d2164f0ce0d
|
|
|
|
$ cd ../b
|
|
$ hg up
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
updating bookmark foobar
|
|
$ echo c2 > f2
|
|
$ hg ci -Am2
|
|
adding f2
|
|
$ hg book -f @
|
|
$ hg book -f X
|
|
$ hg book
|
|
@ 1:9b140be10808
|
|
* X 1:9b140be10808
|
|
Y 0:4e3505fd9583
|
|
Z 0:4e3505fd9583
|
|
foo -1:000000000000
|
|
foobar 1:9b140be10808
|
|
|
|
$ hg pull --config paths.foo=../a foo
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
divergent bookmark X stored as X@foo
|
|
updating bookmark Z
|
|
divergent bookmark @ stored as @foo
|
|
(run 'hg heads' to see heads, 'hg merge' to merge)
|
|
$ hg book
|
|
@ 1:9b140be10808
|
|
@foo 2:0d2164f0ce0d
|
|
* X 1:9b140be10808
|
|
X@foo 2:0d2164f0ce0d
|
|
Y 0:4e3505fd9583
|
|
Z 2:0d2164f0ce0d
|
|
foo -1:000000000000
|
|
foobar 1:9b140be10808
|
|
$ hg push -f ../a
|
|
pushing to ../a
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
$ hg -R ../a book
|
|
@ 1:0d2164f0ce0d
|
|
* X 1:0d2164f0ce0d
|
|
Y 0:4e3505fd9583
|
|
Z 1:0d2164f0ce0d
|
|
|
|
update a remote bookmark from a non-head to a head
|
|
|
|
$ hg up -q Y
|
|
$ echo c3 > f2
|
|
$ hg ci -Am3
|
|
adding f2
|
|
created new head
|
|
$ hg push ../a
|
|
pushing to ../a
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
updating bookmark Y
|
|
$ hg -R ../a book
|
|
@ 1:0d2164f0ce0d
|
|
* X 1:0d2164f0ce0d
|
|
Y 3:f6fc62dde3c0
|
|
Z 1:0d2164f0ce0d
|
|
|
|
diverging a remote bookmark fails
|
|
|
|
$ hg up -q 4e3505fd9583
|
|
$ echo c4 > f2
|
|
$ hg ci -Am4
|
|
adding f2
|
|
created new head
|
|
$ echo c5 > f2
|
|
$ hg ci -Am5
|
|
$ hg log -G
|
|
@ 5:c922c0139ca0 5
|
|
|
|
|
o 4:4efff6d98829 4
|
|
|
|
|
| o 3:f6fc62dde3c0 3
|
|
|/
|
|
| o 2:0d2164f0ce0d 1
|
|
|/
|
|
| o 1:9b140be10808 2
|
|
|/
|
|
o 0:4e3505fd9583 test
|
|
|
|
|
|
$ hg book -f Y
|
|
|
|
$ cat <<EOF > ../a/.hg/hgrc
|
|
> [web]
|
|
> push_ssl = false
|
|
> allow_push = *
|
|
> EOF
|
|
|
|
$ hg -R ../a serve -p $HGPORT2 -d --pid-file=../hg2.pid
|
|
$ cat ../hg2.pid >> $DAEMON_PIDS
|
|
|
|
$ hg push http://localhost:$HGPORT2/
|
|
pushing to http://localhost:$HGPORT2/
|
|
searching for changes
|
|
abort: push creates new remote head c922c0139ca0!
|
|
(did you forget to merge? use push -f to force)
|
|
[255]
|
|
$ hg -R ../a book
|
|
@ 1:0d2164f0ce0d
|
|
* X 1:0d2164f0ce0d
|
|
Y 3:f6fc62dde3c0
|
|
Z 1:0d2164f0ce0d
|
|
|
|
|
|
Unrelated marker does not alter the decision
|
|
|
|
$ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
|
$ hg push http://localhost:$HGPORT2/
|
|
pushing to http://localhost:$HGPORT2/
|
|
searching for changes
|
|
abort: push creates new remote head c922c0139ca0!
|
|
(did you forget to merge? use push -f to force)
|
|
[255]
|
|
$ hg -R ../a book
|
|
@ 1:0d2164f0ce0d
|
|
* X 1:0d2164f0ce0d
|
|
Y 3:f6fc62dde3c0
|
|
Z 1:0d2164f0ce0d
|
|
|
|
Update to a successor works
|
|
|
|
$ hg id --debug -r 3
|
|
f6fc62dde3c0771e29704af56ba4d8af77abcc2f
|
|
$ hg id --debug -r 4
|
|
4efff6d98829d9c824c621afd6e3f01865f5439f
|
|
$ hg id --debug -r 5
|
|
c922c0139ca03858f655e4a2af4dd02796a63969 tip Y
|
|
$ hg debugobsolete f6fc62dde3c0771e29704af56ba4d8af77abcc2f 4efff6d98829d9c824c621afd6e3f01865f5439f
|
|
$ hg push http://localhost:$HGPORT2/
|
|
pushing to http://localhost:$HGPORT2/
|
|
searching for changes
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 2 changesets with 2 changes to 1 files (+1 heads)
|
|
updating bookmark Y
|
|
$ hg -R ../a book
|
|
@ 1:0d2164f0ce0d
|
|
* X 1:0d2164f0ce0d
|
|
Y 5:c922c0139ca0
|
|
Z 1:0d2164f0ce0d
|
|
|
|
hgweb
|
|
|
|
$ cat <<EOF > .hg/hgrc
|
|
> [web]
|
|
> push_ssl = false
|
|
> allow_push = *
|
|
> EOF
|
|
|
|
$ hg serve -p $HGPORT -d --pid-file=../hg.pid -E errors.log
|
|
$ cat ../hg.pid >> $DAEMON_PIDS
|
|
$ cd ../a
|
|
|
|
$ hg debugpushkey http://localhost:$HGPORT/ namespaces
|
|
bookmarks
|
|
phases
|
|
namespaces
|
|
obsolete
|
|
$ hg debugpushkey http://localhost:$HGPORT/ bookmarks
|
|
@ 9b140be1080824d768c5a4691a564088eede71f9
|
|
foo 0000000000000000000000000000000000000000
|
|
foobar 9b140be1080824d768c5a4691a564088eede71f9
|
|
Y c922c0139ca03858f655e4a2af4dd02796a63969
|
|
X 9b140be1080824d768c5a4691a564088eede71f9
|
|
Z 0d2164f0ce0d8f1d6f94351eba04b794909be66c
|
|
$ hg out -B http://localhost:$HGPORT/
|
|
comparing with http://localhost:$HGPORT/
|
|
searching for changed bookmarks
|
|
no changed bookmarks found
|
|
[1]
|
|
$ hg push -B Z http://localhost:$HGPORT/
|
|
pushing to http://localhost:$HGPORT/
|
|
searching for changes
|
|
no changes found
|
|
exporting bookmark Z
|
|
[1]
|
|
$ hg book -d Z
|
|
$ hg in -B http://localhost:$HGPORT/
|
|
comparing with http://localhost:$HGPORT/
|
|
searching for changed bookmarks
|
|
Z 0d2164f0ce0d
|
|
foo 000000000000
|
|
foobar 9b140be10808
|
|
$ hg pull -B Z http://localhost:$HGPORT/
|
|
pulling from http://localhost:$HGPORT/
|
|
no changes found
|
|
divergent bookmark @ stored as @1
|
|
adding remote bookmark foo
|
|
adding remote bookmark foobar
|
|
divergent bookmark X stored as X@1
|
|
adding remote bookmark Z
|
|
importing bookmark Z
|
|
$ hg clone http://localhost:$HGPORT/ cloned-bookmarks
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 5 changesets with 5 changes to 3 files (+2 heads)
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg -R cloned-bookmarks bookmarks
|
|
@ 1:9b140be10808
|
|
X 1:9b140be10808
|
|
Y 4:c922c0139ca0
|
|
Z 2:0d2164f0ce0d
|
|
foo -1:000000000000
|
|
foobar 1:9b140be10808
|
|
|
|
$ cd ..
|
|
|
|
Pushing a bookmark should only push the changes required by that
|
|
bookmark, not all outgoing changes:
|
|
$ hg clone http://localhost:$HGPORT/ addmarks
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 5 changesets with 5 changes to 3 files (+2 heads)
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd addmarks
|
|
$ echo foo > foo
|
|
$ hg add foo
|
|
$ hg commit -m 'add foo'
|
|
$ echo bar > bar
|
|
$ hg add bar
|
|
$ hg commit -m 'add bar'
|
|
$ hg co "tip^"
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg book add-foo
|
|
$ hg book -r tip add-bar
|
|
Note: this push *must* push only a single changeset, as that's the point
|
|
of this test.
|
|
$ hg push -B add-foo --traceback
|
|
pushing to http://localhost:$HGPORT/
|
|
searching for changes
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 1 changesets with 1 changes to 1 files
|
|
exporting bookmark add-foo
|
|
|
|
$ cd ..
|