Mercurial > hg
view tests/test-exchange-multi-source.t @ 49779:7d6c8943353a stable
hg: show the correct message when cloning an LFS repo with extension disabled
The `extensions._disabledpaths()` doesn't handle fetching help from `__index__`,
so it returns an empty dictionary of paths. That means None is always returned
from `extensions.disabled_help()` when embedding resources inside the pyoxidizer
or py2exe binary, regardless of the arg or if is an external extension stored in
the filesystem. And that means wrongly telling the user with an explicitly
disabled LFS extension that it will be enabled locally upon cloning from an LFS
remote. That causes test-lfs-serve.t:295 to fail.
This effectively reverts most of the rest of 843418dc0b1b, while keeping the
help text change in place (which was specifically identified as a problem).
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 05 Dec 2022 15:14:33 -0500 |
parents | 834f4e9d1af2 |
children |
line wrap: on
line source
==================================================== Test push/pull from multiple source at the same time ==================================================== Setup ===== main repository --------------- $ . $RUNTESTDIR/testlib/common.sh $ hg init main-repo $ cd main-repo $ mkcommit A $ mkcommit B $ mkcommit C $ mkcommit D $ mkcommit E $ hg up 'desc(B)' 0 files updated, 0 files merged, 3 files removed, 0 files unresolved $ mkcommit F created new head $ mkcommit G $ hg up 'desc(C)' 1 files updated, 0 files merged, 2 files removed, 0 files unresolved $ mkcommit H created new head $ hg up null --quiet $ hg log -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 7 | | o E 4 | | | o D 3 |/ o C 2 | | o G 6 | | | o F 5 |/ o B 1 | o A 0 $ cd .. Various other repositories -------------------------- $ hg clone main-repo branch-E --rev 4 -U adding changesets adding manifests adding file changes added 5 changesets with 5 changes to 5 files new changesets 4a2df7238c3b:a603bfb5a83e $ hg clone main-repo branch-G --rev 6 -U adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files new changesets 4a2df7238c3b:c521a06b234b $ hg clone main-repo branch-H --rev 7 -U adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files new changesets 4a2df7238c3b:40faebb2ec45 Test simple bare operation ========================== pull ---- $ hg clone main-repo test-repo-bare --rev 0 -U adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 4a2df7238c3b $ hg pull -R test-repo-bare ./branch-E ./branch-G ./branch-H pulling from ./branch-E searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files new changesets 27547f69f254:a603bfb5a83e (run 'hg update' to get a working copy) pulling from ./branch-G searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) new changesets 2f3a4c5c1417:c521a06b234b (run 'hg heads' to see heads, 'hg merge' to merge) pulling from ./branch-H searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) new changesets 40faebb2ec45 (run 'hg heads .' to see heads, 'hg merge' to merge) $ hg log -R test-repo-bare -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 7 | | o E 4 | | | o D 3 |/ o C 2 | | o G 6 | | | o F 5 |/ o B 1 | o A 0 push ---- $ cp -R ./branch-E ./branch-E-push $ cp -R ./branch-G ./branch-G-push $ cp -R ./branch-H ./branch-H-push $ hg out -G -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push comparing with ./branch-E-push searching for changes comparing with ./branch-G-push searching for changes comparing with ./branch-H-push searching for changes o changeset: 7:40faebb2ec45 | tag: tip | parent: 2:f838bfaca5c7 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: H | | o changeset: 6:c521a06b234b | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 | | summary: G | | | o changeset: 5:2f3a4c5c1417 | parent: 1:27547f69f254 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: F | | o changeset: 4:a603bfb5a83e | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 | | summary: E | | | o changeset: 3:b3325c91a4d9 |/ user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: D | o changeset: 2:f838bfaca5c7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: C $ hg bundle -R test-repo-bare bundle.hg ./branch-E-push ./branch-G-push ./branch-H-push searching for changes searching for changes searching for changes 6 changesets found $ hg push --force -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push pushing to ./branch-E-push searching for changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 3 files (+2 heads) pushing to ./branch-G-push searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files (+2 heads) pushing to ./branch-H-push searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files (+2 heads) $ hg log -R ./branch-E-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 7 | | o E 4 | | | o D 3 |/ o C 2 | | o G 6 | | | o F 5 |/ o B 1 | o A 0 $ hg log -R ./branch-G-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 7 | | o E 6 | | | o D 5 |/ o C 4 | | o G 3 | | | o F 2 |/ o B 1 | o A 0 $ hg log -R ./branch-H-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o G 7 | o F 6 | | o E 5 | | | o D 4 | | | | o H 3 | |/ | o C 2 |/ o B 1 | o A 0 $ rm -rf ./*-push Test operation with a target ============================ pull ---- $ hg clone main-repo test-repo-rev --rev 0 -U adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 4a2df7238c3b pulling an explicite revision $ node_b=`hg log -R main-repo --rev 'desc(B)' -T '{node}'` $ hg pull -R test-repo-rev ./branch-E ./branch-G ./branch-H --rev $node_b pulling from ./branch-E searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 27547f69f254 (run 'hg update' to get a working copy) pulling from ./branch-G no changes found pulling from ./branch-H no changes found $ hg log -R test-repo-rev -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o B 1 | o A 0 pulling a branch head, the branch head resolve to different revision on the different repositories. $ hg pull -R test-repo-rev ./branch-E ./branch-G ./branch-H --rev default pulling from ./branch-E searching for changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 3 files new changesets f838bfaca5c7:a603bfb5a83e (run 'hg update' to get a working copy) pulling from ./branch-G searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) new changesets 2f3a4c5c1417:c521a06b234b (run 'hg heads' to see heads, 'hg merge' to merge) pulling from ./branch-H searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) new changesets 40faebb2ec45 (run 'hg heads .' to see heads, 'hg merge' to merge) $ hg log -R test-repo-rev -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 7 | | o E 4 | | | o D 3 |/ o C 2 | | o G 6 | | | o F 5 |/ o B 1 | o A 0 push ---- We only push a specific branch with --rev $ cp -R ./branch-E ./branch-E-push $ cp -R ./branch-G ./branch-G-push $ cp -R ./branch-H ./branch-H-push $ hg out -G -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push --rev default comparing with ./branch-E-push searching for changes comparing with ./branch-G-push searching for changes comparing with ./branch-H-push searching for changes no changes found o changeset: 7:40faebb2ec45 | tag: tip | parent: 2:f838bfaca5c7 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: H | o changeset: 2:f838bfaca5c7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: C $ hg bundle -R test-repo-bare bundle.hg ./branch-E-push ./branch-G-push ./branch-H-push --rev default searching for changes searching for changes searching for changes 2 changesets found $ hg push --force -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push --rev default pushing to ./branch-E-push searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) pushing to ./branch-G-push searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) pushing to ./branch-H-push searching for changes no changes found $ hg log -R ./branch-E-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 5 | | o E 4 | | | o D 3 |/ o C 2 | o B 1 | o A 0 $ hg log -R ./branch-G-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 5 | o C 4 | | o G 3 | | | o F 2 |/ o B 1 | o A 0 $ hg log -R ./branch-H-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 3 | o C 2 | o B 1 | o A 0 $ rm -rf ./*-push Same push, but the first one is a no-op $ cp -R ./branch-E ./branch-E-push $ cp -R ./branch-G ./branch-G-push $ cp -R ./branch-H ./branch-H-push $ hg out -G -R test-repo-bare ./branch-G-push ./branch-H-push ./branch-E-push --rev default comparing with ./branch-G-push searching for changes comparing with ./branch-H-push searching for changes no changes found comparing with ./branch-E-push searching for changes o changeset: 7:40faebb2ec45 | tag: tip | parent: 2:f838bfaca5c7 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: H | o changeset: 2:f838bfaca5c7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: C $ hg bundle -R test-repo-bare bundle.hg ./branch-G-push ./branch-H-push ./branch-E-push --rev default searching for changes searching for changes searching for changes 2 changesets found $ hg push --force -R test-repo-bare ./branch-G-push ./branch-H-push ./branch-E-push --rev default pushing to ./branch-G-push searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) pushing to ./branch-H-push searching for changes no changes found pushing to ./branch-E-push searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) $ hg log -R ./branch-E-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 5 | | o E 4 | | | o D 3 |/ o C 2 | o B 1 | o A 0 $ hg log -R ./branch-G-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 5 | o C 4 | | o G 3 | | | o F 2 |/ o B 1 | o A 0 $ hg log -R ./branch-H-push -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 3 | o C 2 | o B 1 | o A 0 $ rm -rf ./*-push Test with --update ================== update without conflicts ------------------------ $ hg clone main-repo test-repo-update --rev 0 adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 4a2df7238c3b updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved We update for each pull, so the first on get into a branch independant from the other and stay there. This is the expected behavior. $ hg log -R test-repo-update -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G @ A 0 $ hg pull -R test-repo-update ./branch-E ./branch-G ./branch-H --update pulling from ./branch-E searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files new changesets 27547f69f254:a603bfb5a83e 4 files updated, 0 files merged, 0 files removed, 0 files unresolved pulling from ./branch-G searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) new changesets 2f3a4c5c1417:c521a06b234b 0 files updated, 0 files merged, 0 files removed, 0 files unresolved updated to "a603bfb5a83e: E" 1 other heads for branch "default" pulling from ./branch-H searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) new changesets 40faebb2ec45 0 files updated, 0 files merged, 0 files removed, 0 files unresolved updated to "a603bfb5a83e: E" 2 other heads for branch "default" $ hg log -R test-repo-update -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G o H 7 | | @ E 4 | | | o D 3 |/ o C 2 | | o G 6 | | | o F 5 |/ o B 1 | o A 0 update with conflicts --------------------- $ hg clone main-repo test-repo-conflict --rev 0 adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 4a2df7238c3b updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved The update has conflict and interrupt the pull. $ echo this-will-conflict > test-repo-conflict/D $ hg add -R test-repo-conflict test-repo-conflict/D $ hg log -R test-repo-conflict -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G @ A 0 $ hg pull -R test-repo-conflict ./branch-E ./branch-G ./branch-H --update pulling from ./branch-E searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files new changesets 27547f69f254:a603bfb5a83e merging D warning: conflicts while merging D! (edit, then use 'hg resolve --mark') 3 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges [1] $ hg -R test-repo-conflict resolve -l U D $ hg log -R test-repo-conflict -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G @ E 4 | o D 3 | o C 2 | o B 1 | % A 0 Testing multi-path definition ---------------------------- $ hg clone main-repo repo-paths --rev 0 adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 4a2df7238c3b updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cp -R ./branch-E ./branch-E-paths $ cp -R ./branch-G ./branch-G-paths $ cp -R ./branch-H ./branch-H-paths $ cat << EOF >> repo-paths/.hg/hgrc > [paths] > E=../branch-E-paths > G=../branch-G-paths > H=../branch-H-paths > EHG=path://E,path://H,path://G > EHG:multi-urls=yes > GEH=path://G,path://E,path://H > GEH:multi-urls=yes > EOF Do various operations and verify that order matters $ hg -R repo-paths push EHG --force pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found pushing to $TESTTMP/branch-G-paths searching for changes no changes found [1] $ hg -R repo-paths push GEH --force pushing to $TESTTMP/branch-G-paths searching for changes no changes found pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found [1] $ hg -R repo-paths push EHG GEH --force pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found pushing to $TESTTMP/branch-G-paths searching for changes no changes found pushing to $TESTTMP/branch-G-paths searching for changes no changes found pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found [1] $ hg -R repo-paths pull EHG pulling from $TESTTMP/branch-E-paths searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files new changesets 27547f69f254:a603bfb5a83e (run 'hg update' to get a working copy) pulling from $TESTTMP/branch-H-paths searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) new changesets 40faebb2ec45 (run 'hg heads' to see heads, 'hg merge' to merge) pulling from $TESTTMP/branch-G-paths searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+1 heads) new changesets 2f3a4c5c1417:c521a06b234b (run 'hg heads .' to see heads, 'hg merge' to merge) $ hg -R repo-paths pull GEH pulling from $TESTTMP/branch-G-paths searching for changes no changes found pulling from $TESTTMP/branch-E-paths searching for changes no changes found pulling from $TESTTMP/branch-H-paths searching for changes no changes found $ hg -R repo-paths pull EHG GEH pulling from $TESTTMP/branch-E-paths searching for changes no changes found pulling from $TESTTMP/branch-H-paths searching for changes no changes found pulling from $TESTTMP/branch-G-paths searching for changes no changes found pulling from $TESTTMP/branch-G-paths searching for changes no changes found pulling from $TESTTMP/branch-E-paths searching for changes no changes found pulling from $TESTTMP/branch-H-paths searching for changes no changes found $ hg -R repo-paths push EHG --force pushing to $TESTTMP/branch-E-paths searching for changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 3 files (+2 heads) pushing to $TESTTMP/branch-H-paths searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files (+2 heads) pushing to $TESTTMP/branch-G-paths searching for changes adding changesets adding manifests adding file changes added 4 changesets with 4 changes to 4 files (+2 heads) $ hg -R repo-paths push GEH --force pushing to $TESTTMP/branch-G-paths searching for changes no changes found pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found [1] $ hg -R repo-paths push EHG GEH --force pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found pushing to $TESTTMP/branch-G-paths searching for changes no changes found pushing to $TESTTMP/branch-G-paths searching for changes no changes found pushing to $TESTTMP/branch-E-paths searching for changes no changes found pushing to $TESTTMP/branch-H-paths searching for changes no changes found [1]