mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
262d694589
Consider a bookmark B that exists both locally and remotely. If B is updated remotely, and then a pull is performed where the pull set contains the new location of B, the bookmark is updated locally. However, if remote B is updated in the middle of a pull to a location not in the pull set, the bookmark won't be updated locally at all. To fix this, list bookmarks before pulling in changesets, not after. This still leaves a race open if B gets moved in between listing bookmarks and pulling in changesets, but the race window is much smaller. Fixing the race properly would require a bundle format upgrade. test-hook.t's output changes because we no longer do two listkeys calls during pull, just one. test-pull-http.t's output changes because we now search for bookmarks before searching for changes.
65 lines
1.6 KiB
Turing
65 lines
1.6 KiB
Turing
$ "$TESTDIR/hghave" killdaemons || exit 80
|
|
|
|
$ hg init test
|
|
$ cd test
|
|
$ echo a > a
|
|
$ hg ci -Ama
|
|
adding a
|
|
$ cd ..
|
|
$ hg clone test test2
|
|
updating to branch default
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd test2
|
|
$ echo a >> a
|
|
$ hg ci -mb
|
|
|
|
Cloning with a password in the URL should not save the password in .hg/hgrc:
|
|
|
|
$ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
|
|
$ cat hg.pid >> $DAEMON_PIDS
|
|
$ hg clone http://foo:xyzzy@localhost:$HGPORT/ test3
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 1 files
|
|
updating to branch default
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cat test3/.hg/hgrc
|
|
[paths]
|
|
default = http://foo@localhost:$HGPORT/
|
|
$ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
|
|
|
|
expect error, cloning not allowed
|
|
|
|
$ echo '[web]' > .hg/hgrc
|
|
$ echo 'allowpull = false' >> .hg/hgrc
|
|
$ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
|
|
$ cat hg.pid >> $DAEMON_PIDS
|
|
$ hg clone http://localhost:$HGPORT/ test4
|
|
requesting all changes
|
|
abort: authorization failed
|
|
[255]
|
|
$ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
|
|
|
|
serve errors
|
|
|
|
$ cat errors.log
|
|
$ req() {
|
|
> hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
|
|
> cat hg.pid >> $DAEMON_PIDS
|
|
> hg --cwd ../test pull http://localhost:$HGPORT/
|
|
> "$TESTDIR/killdaemons.py" hg.pid
|
|
> echo % serve errors
|
|
> cat errors.log
|
|
> }
|
|
|
|
expect error, pulling not allowed
|
|
|
|
$ req
|
|
pulling from http://localhost:$HGPORT/
|
|
abort: authorization failed
|
|
% serve errors
|
|
|
|
$ cd ..
|