mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
84280e36c3
Summary: Remove selectivepullaccessedbookmarks feature because it contains bugs and causes many undesired issues. This was added to migrate existing repos to selective pull and is not needed anymore. Main effects are: * if you enable selectivepull for an existing repo, it won't reduce number of subscribed bookmarks. * some operations like `hg push` or `hg pull -r` in their underlying implementation update all subscribed bookmarks, not just accessed like before. This drives changes to the tests. Reminder, the bookmark has been marked as "accessed" if the repo has been ever updated to that bookmark. All tests fixed accordingly. Reviewed By: markbt Differential Revision: D26460435 fbshipit-source-id: f839b9f207bfc478a0336ec807b720d35a0bb12e
187 lines
6.1 KiB
Perl
187 lines
6.1 KiB
Perl
#chg-compatible
|
|
|
|
$ configure dummyssh
|
|
$ disable treemanifest
|
|
$ enable infinitepush
|
|
$ setconfig remotenames.hoist=default 'remotenames.autopullhoistpattern=re:.*'
|
|
$ setconfig infinitepush.branchpattern="re:scratch/.+"
|
|
$ mkcommit() {
|
|
> echo "$1" > "$1"
|
|
> hg add "$1"
|
|
> hg ci -m "$1"
|
|
> }
|
|
$ scratchnodes() {
|
|
> for node in `find ../repo/.hg/scratchbranches/index/nodemap/* | sort`; do
|
|
> echo ${node##*/}
|
|
> done
|
|
> }
|
|
$ scratchbookmarks() {
|
|
> for bookmark in `find ../repo/.hg/scratchbranches/index/bookmarkmap/* -type f | sort`; do
|
|
> echo "${bookmark##*/bookmarkmap/} `cat $bookmark`"
|
|
> done
|
|
> }
|
|
|
|
Create server repo with one commit and one remote bookmark
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ setconfig infinitepush.server=yes infinitepush.indextype=disk infinitepush.storetype=disk
|
|
$ mkcommit servercommit
|
|
Let's make server bookmark to match scratch pattern and
|
|
check that it won't be handled like scratch bookmark
|
|
$ hg book scratch/serverbook
|
|
$ cd ..
|
|
|
|
Clone server and enable remotenames
|
|
$ hg clone ssh://user@dummy/repo --config extensions.remotenames= client -q
|
|
$ cd client
|
|
$ enable remotenames
|
|
$ hg book --remote
|
|
default/scratch/serverbook ac312cb08db5
|
|
|
|
Push scratch commit and scratch bookmark
|
|
$ mkcommit scratchcommitwithremotenames
|
|
$ hg push --config extensions.remotenames= -r . --to scratch/mybranch --create
|
|
pushing to ssh://user@dummy/repo
|
|
searching for changes
|
|
remote: pushing 1 commit:
|
|
remote: 620472ff5c0c scratchcommitwithremotenames
|
|
$ hg book --remote
|
|
default/scratch/mybranch 620472ff5c0c
|
|
default/scratch/serverbook ac312cb08db5
|
|
$ hg book
|
|
no bookmarks set
|
|
$ hg -R ../repo log -G
|
|
@ commit: ac312cb08db5
|
|
bookmark: scratch/serverbook
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: servercommit
|
|
|
|
$ scratchnodes
|
|
620472ff5c0c4a560a3ffd98c07f0c9ecad33f64
|
|
$ scratchbookmarks
|
|
scratch/mybranch 620472ff5c0c4a560a3ffd98c07f0c9ecad33f64
|
|
$ cd ..
|
|
|
|
Clone server one more time and pull scratch bookmark. Make sure it is remote
|
|
$ hg clone ssh://user@dummy/repo --config extensions.remotenames= client2 -q
|
|
$ cd client2
|
|
$ enable remotenames
|
|
$ hg book --remote
|
|
default/scratch/serverbook ac312cb08db5
|
|
$ hg pull -B scratch/mybranch
|
|
pulling from ssh://user@dummy/repo
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
$ hg book --remote
|
|
default/scratch/mybranch 620472ff5c0c
|
|
default/scratch/serverbook ac312cb08db5
|
|
$ hg book
|
|
no bookmarks set
|
|
|
|
Make sure that next non-scratch pull doesn't override remote scratch bookmarks
|
|
$ hg pull
|
|
pulling from ssh://user@dummy/repo
|
|
searching for changes
|
|
no changes found
|
|
$ hg book --remote
|
|
default/scratch/mybranch 620472ff5c0c
|
|
default/scratch/serverbook ac312cb08db5
|
|
$ cd ..
|
|
|
|
Create one more branch head on the server
|
|
$ cd repo
|
|
$ mkcommit head1
|
|
$ hg up ac312cb08db5
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
(leaving bookmark scratch/serverbook)
|
|
$ mkcommit head2
|
|
$ hg log -G
|
|
@ commit: dc4b2ecb723b
|
|
│ user: test
|
|
│ date: Thu Jan 01 00:00:00 1970 +0000
|
|
│ summary: head2
|
|
│
|
|
│ o commit: 64d557aa86fd
|
|
├─╯ bookmark: scratch/serverbook
|
|
│ user: test
|
|
│ date: Thu Jan 01 00:00:00 1970 +0000
|
|
│ summary: head1
|
|
│
|
|
o commit: ac312cb08db5
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: servercommit
|
|
|
|
$ cd ..
|
|
|
|
Go back to client, make pull and make sure that we pulled remote branches
|
|
$ cd client
|
|
$ hg dbsh -c 'ui.write("".join(sorted(repo.svfs.readutf8("remotenames").splitlines(True))))'
|
|
620472ff5c0c4a560a3ffd98c07f0c9ecad33f64 bookmarks default/scratch/mybranch
|
|
ac312cb08db5366e622a01fd001e583917eb9f1c bookmarks default/scratch/serverbook
|
|
$ hg pull
|
|
pulling from ssh://user@dummy/repo
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 2 files
|
|
$ hg dbsh -c 'ui.write("".join(sorted(repo.svfs.readutf8("remotenames").splitlines(True))))'
|
|
620472ff5c0c4a560a3ffd98c07f0c9ecad33f64 bookmarks default/scratch/mybranch
|
|
64d557aa86fdc42384b193f7eab99059da84f1f0 bookmarks default/scratch/serverbook
|
|
$ cd ..
|
|
|
|
Push from another client, make sure that push updates other remote bookmarks as well (like "serverbook")
|
|
$ cd client2
|
|
$ hg up scratch/serverbook
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ mkcommit newscratch
|
|
$ hg push -r . --to scratch/secondbranch --create
|
|
pushing to ssh://user@dummy/repo
|
|
searching for changes
|
|
remote: pushing 1 commit:
|
|
remote: 36667a3f76e4 newscratch
|
|
$ hg book --remote
|
|
default/scratch/mybranch 620472ff5c0c
|
|
default/scratch/secondbranch 36667a3f76e4
|
|
default/scratch/serverbook 64d557aa86fd
|
|
$ hg book
|
|
no bookmarks set
|
|
|
|
Try to push with remotebookmarks disabled
|
|
$ hg push --config remotenames.bookmarks=False -r . --to scratch/secondbranch
|
|
pushing to ssh://user@dummy/repo
|
|
searching for changes
|
|
remote: pushing 1 commit:
|
|
remote: 36667a3f76e4 newscratch
|
|
$ hg book
|
|
no bookmarks set
|
|
|
|
Create new bookmark and try to pull it
|
|
$ mkcommit newcommittoupdate1
|
|
$ hg push -q -r . --to scratch/branchtoupdateto1 --create
|
|
$ hg up -q ".^"
|
|
$ mkcommit newcommittoupdate2
|
|
$ hg push -q -r . --to scratch/branchtoupdateto2 --create
|
|
$ hg up -q ".^"
|
|
$ mkcommit newcommittopull
|
|
$ hg push -q -r . --to scratch/branchtopull --create
|
|
$ cd ../client
|
|
$ hg up default/scratch/branchtoupdateto1
|
|
pulling 'default/scratch/branchtoupdateto1', 'scratch/branchtoupdateto1' from 'ssh://user@dummy/repo'
|
|
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [remotenames]
|
|
> hoist=remote
|
|
> rename.default=remote
|
|
> EOF
|
|
|
|
$ hg up remote/scratch/branchtoupdateto2
|
|
pulling 'remote/scratch/branchtoupdateto2', 'scratch/branchtoupdateto2' from 'ssh://user@dummy/repo'
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|