Mercurial > hg
view tests/test-infinitepush.t @ 37196:14acab54e08b
infinitepush: drop hack related to --to, --create flags of remotenames-ext
The remotenames extension has --to, --create. --allow-anon flags which won't be
ported to core. This patch drops the hack which fixes the interaction with
remotenames-ext during push.
In upcoming patches, --to and --create extensions will be removed from
infinitepush also.
Differential Revision: https://phab.mercurial-scm.org/D2105
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 09 Feb 2018 13:56:09 +0530 |
parents | 03ff17a4bf53 |
children | 78c2e9418278 |
line wrap: on
line source
Testing infinipush extension and the confi options provided by it Setup $ . "$TESTDIR/library-infinitepush.sh" $ cp $HGRCPATH $TESTTMP/defaulthgrc $ setupcommon $ hg init repo $ cd repo $ setupserver $ echo initialcommit > initialcommit $ hg ci -Aqm "initialcommit" $ hg phase --public . $ cd .. $ hg clone ssh://user@dummy/repo client -q Create two heads. Push first head alone, then two heads together. Make sure that multihead push works. $ cd client $ echo multihead1 > multihead1 $ hg add multihead1 $ hg ci -m "multihead1" $ hg up null 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo multihead2 > multihead2 $ hg ci -Am "multihead2" adding multihead2 created new head $ hg push -r . --bundle-store pushing to ssh://user@dummy/repo searching for changes remote: pushing 1 commit: remote: ee4802bf6864 multihead2 $ hg push -r '1:2' --bundle-store pushing to ssh://user@dummy/repo searching for changes remote: pushing 2 commits: remote: bc22f9a30a82 multihead1 remote: ee4802bf6864 multihead2 $ scratchnodes bc22f9a30a821118244deacbd732e394ed0b686c ab1bc557aa090a9e4145512c734b6e8a828393a5 ee4802bf6864326a6b3dcfff5a03abc2a0a69b8f ab1bc557aa090a9e4145512c734b6e8a828393a5 Create two new scratch bookmarks $ hg up 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo scratchfirstpart > scratchfirstpart $ hg ci -Am "scratchfirstpart" adding scratchfirstpart created new head $ hg push -r . --to scratch/firstpart --create pushing to ssh://user@dummy/repo searching for changes remote: pushing 1 commit: remote: 176993b87e39 scratchfirstpart $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo scratchsecondpart > scratchsecondpart $ hg ci -Am "scratchsecondpart" adding scratchsecondpart created new head $ hg push -r . --to scratch/secondpart --create pushing to ssh://user@dummy/repo searching for changes remote: pushing 1 commit: remote: 8db3891c220e scratchsecondpart Pull two bookmarks from the second client $ cd .. $ hg clone ssh://user@dummy/repo client2 -q $ cd client2 $ hg pull -B scratch/firstpart -B scratch/secondpart 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 adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) new changesets * (glob) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg log -r scratch/secondpart -T '{node}' 8db3891c220e216f6da214e8254bd4371f55efca (no-eol) $ hg log -r scratch/firstpart -T '{node}' 176993b87e39bd88d66a2cccadabe33f0b346339 (no-eol) Make two commits to the scratch branch $ echo testpullbycommithash1 > testpullbycommithash1 $ hg ci -Am "testpullbycommithash1" adding testpullbycommithash1 created new head $ hg log -r '.' -T '{node}\n' > ../testpullbycommithash1 $ echo testpullbycommithash2 > testpullbycommithash2 $ hg ci -Aqm "testpullbycommithash2" $ hg push -r . --to scratch/mybranch --create -q Create third client and pull by commit hash. Make sure testpullbycommithash2 has not fetched $ cd .. $ hg clone ssh://user@dummy/repo client3 -q $ cd client3 $ hg pull -r `cat ../testpullbycommithash1` 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 new changesets 33910bfe6ffe (run 'hg update' to get a working copy) $ hg log -G -T '{desc} {phase} {bookmarks}' o testpullbycommithash1 draft | @ initialcommit public Make public commit in the repo and pull it. Make sure phase on the client is public. $ cd ../repo $ echo publiccommit > publiccommit $ hg ci -Aqm "publiccommit" $ hg phase --public . $ cd ../client3 $ hg pull 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 (+1 heads) new changesets a79b6597f322 (run 'hg heads' to see heads, 'hg merge' to merge) $ hg log -G -T '{desc} {phase} {bookmarks} {node|short}' o publiccommit public a79b6597f322 | | o testpullbycommithash1 draft 33910bfe6ffe |/ @ initialcommit public 67145f466344 $ hg up a79b6597f322 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo scratchontopofpublic > scratchontopofpublic $ hg ci -Aqm "scratchontopofpublic" $ hg push -r . --to scratch/scratchontopofpublic --create pushing to ssh://user@dummy/repo searching for changes remote: pushing 1 commit: remote: c70aee6da07d scratchontopofpublic $ cd ../client2 $ hg pull -B scratch/scratchontopofpublic 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 (+1 heads) adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets a79b6597f322:c70aee6da07d (run 'hg heads .' to see heads, 'hg merge' to merge) $ hg log -r scratch/scratchontopofpublic -T '{phase}' draft (no-eol) Strip scratchontopofpublic commit and do hg update $ hg log -r tip -T '{node}\n' c70aee6da07d7cdb9897375473690df3a8563339 $ echo "[extensions]" >> .hg/hgrc $ echo "strip=" >> .hg/hgrc $ hg strip -q tip $ hg up c70aee6da07d7cdb9897375473690df3a8563339 'c70aee6da07d7cdb9897375473690df3a8563339' does not exist locally - looking for it remotely... 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 new changesets c70aee6da07d (run 'hg update' to get a working copy) 'c70aee6da07d7cdb9897375473690df3a8563339' found remotely 2 files updated, 0 files merged, 2 files removed, 0 files unresolved Trying to pull from bad path $ hg strip -q tip $ hg --config paths.default=badpath up c70aee6da07d7cdb9897375473690df3a8563339 'c70aee6da07d7cdb9897375473690df3a8563339' does not exist locally - looking for it remotely... pulling from $TESTTMP/client2/badpath (glob) pull failed: repository $TESTTMP/client2/badpath not found abort: unknown revision 'c70aee6da07d7cdb9897375473690df3a8563339'! [255] Strip commit and pull it using hg update with bookmark name $ hg strip -q d8fde0ddfc96 $ hg book -d scratch/mybranch $ hg up scratch/mybranch 'scratch/mybranch' does not exist locally - looking for it remotely... pulling from ssh://user@dummy/repo searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 2 files new changesets d8fde0ddfc96 (run 'hg update' to get a working copy) 'scratch/mybranch' found remotely 2 files updated, 0 files merged, 1 files removed, 0 files unresolved (activating bookmark scratch/mybranch) $ hg log -r scratch/mybranch -T '{node}' d8fde0ddfc962183977f92d2bc52d303b8840f9d (no-eol) Test debugfillinfinitepushmetadata $ cd ../repo $ hg debugfillinfinitepushmetadata abort: nodes are not specified [255] $ hg debugfillinfinitepushmetadata --node randomnode abort: node randomnode is not found [255] $ hg debugfillinfinitepushmetadata --node d8fde0ddfc962183977f92d2bc52d303b8840f9d $ cat .hg/scratchbranches/index/nodemetadatamap/d8fde0ddfc962183977f92d2bc52d303b8840f9d {"changed_files": {"testpullbycommithash2": {"adds": 1, "isbinary": false, "removes": 0, "status": "added"}}} (no-eol) $ cd ../client $ hg up d8fde0ddfc962183977f92d2bc52d303b8840f9d 'd8fde0ddfc962183977f92d2bc52d303b8840f9d' does not exist locally - looking for it remotely... 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 (+1 heads) new changesets 33910bfe6ffe:d8fde0ddfc96 (run 'hg heads .' to see heads, 'hg merge' to merge) 'd8fde0ddfc962183977f92d2bc52d303b8840f9d' found remotely 2 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo file > file $ hg add file $ hg rm testpullbycommithash2 $ hg ci -m 'add and rm files' $ hg log -r . -T '{node}\n' 3edfe7e9089ab9f728eb8e0d0c62a5d18cf19239 $ hg cp file cpfile $ hg mv file mvfile $ hg ci -m 'cpfile and mvfile' $ hg log -r . -T '{node}\n' c7ac39f638c6b39bcdacf868fa21b6195670f8ae $ hg push -r . --bundle-store pushing to ssh://user@dummy/repo searching for changes remote: pushing 4 commits: remote: 33910bfe6ffe testpullbycommithash1 remote: d8fde0ddfc96 testpullbycommithash2 remote: 3edfe7e9089a add and rm files remote: c7ac39f638c6 cpfile and mvfile $ cd ../repo $ hg debugfillinfinitepushmetadata --node 3edfe7e9089ab9f728eb8e0d0c62a5d18cf19239 --node c7ac39f638c6b39bcdacf868fa21b6195670f8ae $ cat .hg/scratchbranches/index/nodemetadatamap/3edfe7e9089ab9f728eb8e0d0c62a5d18cf19239 {"changed_files": {"file": {"adds": 1, "isbinary": false, "removes": 0, "status": "added"}, "testpullbycommithash2": {"adds": 0, "isbinary": false, "removes": 1, "status": "removed"}}} (no-eol) $ cat .hg/scratchbranches/index/nodemetadatamap/c7ac39f638c6b39bcdacf868fa21b6195670f8ae {"changed_files": {"cpfile": {"adds": 1, "copies": "file", "isbinary": false, "removes": 0, "status": "added"}, "file": {"adds": 0, "isbinary": false, "removes": 1, "status": "removed"}, "mvfile": {"adds": 1, "copies": "file", "isbinary": false, "removes": 0, "status": "added"}}} (no-eol) Test infinitepush.metadatafilelimit number $ cd ../client $ echo file > file $ hg add file $ echo file1 > file1 $ hg add file1 $ echo file2 > file2 $ hg add file2 $ hg ci -m 'add many files' $ hg log -r . -T '{node}' 09904fb20c53ff351bd3b1d47681f569a4dab7e5 (no-eol) $ hg push -r . --bundle-store pushing to ssh://user@dummy/repo searching for changes remote: pushing 5 commits: remote: 33910bfe6ffe testpullbycommithash1 remote: d8fde0ddfc96 testpullbycommithash2 remote: 3edfe7e9089a add and rm files remote: c7ac39f638c6 cpfile and mvfile remote: 09904fb20c53 add many files $ cd ../repo $ hg debugfillinfinitepushmetadata --node 09904fb20c53ff351bd3b1d47681f569a4dab7e5 --config infinitepush.metadatafilelimit=2 $ cat .hg/scratchbranches/index/nodemetadatamap/09904fb20c53ff351bd3b1d47681f569a4dab7e5 {"changed_files": {"file": {"adds": 1, "isbinary": false, "removes": 0, "status": "added"}, "file1": {"adds": 1, "isbinary": false, "removes": 0, "status": "added"}}, "changed_files_truncated": true} (no-eol) Test infinitepush.fillmetadatabranchpattern $ cd ../repo $ cat >> .hg/hgrc << EOF > [infinitepush] > fillmetadatabranchpattern=re:scratch/fillmetadata/.* > EOF $ cd ../client $ echo tofillmetadata > tofillmetadata $ hg ci -Aqm "tofillmetadata" $ hg log -r . -T '{node}\n' d2b0410d4da084bc534b1d90df0de9eb21583496 $ hg push -r . --to scratch/fillmetadata/fill --create pushing to ssh://user@dummy/repo searching for changes remote: pushing 6 commits: remote: 33910bfe6ffe testpullbycommithash1 remote: d8fde0ddfc96 testpullbycommithash2 remote: 3edfe7e9089a add and rm files remote: c7ac39f638c6 cpfile and mvfile remote: 09904fb20c53 add many files remote: d2b0410d4da0 tofillmetadata Make sure background process finished $ sleep 3 $ cd ../repo $ cat .hg/scratchbranches/index/nodemetadatamap/d2b0410d4da084bc534b1d90df0de9eb21583496 {"changed_files": {"tofillmetadata": {"adds": 1, "isbinary": false, "removes": 0, "status": "added"}}} (no-eol)