Mercurial > hg
view tests/test-narrow-merge-outside.t @ 51756:a53162bd73ed
subrepo: drop the default value of None for the archive matcher
This was flagged by pytype after adding hints to `match.subdirmatcher` that it
takes a non-optional matcher. That matcher argument is used without a guard in
the subdirmatcher constructor, so that's the correct restriction.
I don't think this fixes a bug in practice because the only way these are
invoked is either by a parent `hgsubrepo.archive()`, `archival.archive()`, or
the largefiles override of these. The `hgsubrepo.archive()` case (and the
largefiles override) uses what the caller provided, so the caller will
eventually be `archival.archive()` (or the largfiles override) up the call
chain. The `archival.archive()` method also has None for its matcher's default
arg. However, the three callers of that (`commands.archive()`,
`webcommands.archive()`, and `extdiff.snapshot()`) all provide a matcher
argument, so the None case can never occur unless a 3rd party extension swaps it
for None. Sadly, we can't make the argument on the `archival.archive()`
non-optional because there is a kwarg prior to it.
Even though the largefiles override of `archival.archive()` is provided a valid
matcher, we duplicate the internal creation of the matcher that the original
`archival.archive()` does for consistency. By eliminating an impossible to hit
case, we can simplify some of the subrepo code too, by dropping unreachable
code.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 01 Aug 2024 01:52:11 -0400 |
parents | 18e69f224e4b |
children |
line wrap: on
line source
=================================================================== Test merge behavior with narrow for item outside of the narrow spec =================================================================== This test currently check for simple "outside of narrow" merge case. I suspect there might be more corner case that need testing, so extending this tests, or replacing it by a more "generative" version, comparing behavior with and without narow. This the feature is currently working with flat manifest only. This is the only case tested. Consider using test-case if tree start supporting this case of merge. Create some initial setup $ . "$TESTDIR/narrow-library.sh" $ hg init server $ echo root > server/root $ mkdir server/inside $ mkdir server/outside $ echo babar > server/inside/inside-change $ echo pom > server/outside/outside-changing $ echo arthur > server/outside/outside-removed $ hg -R server add server/ adding server/inside/inside-change adding server/outside/outside-changing adding server/outside/outside-removed adding server/root $ hg -R server commit -m root $ hg clone ssh://user@dummy/server client --narrow --include inside requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets a0c415d360e5 updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved "trivial" change outside of narrow spec on the server $ echo zephir > server/outside/outside-added $ hg -R server add server/outside/outside-added $ echo flore > server/outside/outside-changing $ hg -R server remove server/outside/outside-removed $ hg -R server commit -m "outside change" Merge them with some unrelated local change $ echo celeste > client/inside/inside-change $ hg -R client commit -m "inside change" $ hg -R client pull pulling from ssh://user@dummy/server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 0 changes to 0 files (+1 heads) new changesets f9ec5453023e (run 'hg heads' to see heads, 'hg merge' to merge) $ hg -R client merge 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg -R client ci -m 'merge changes' $ hg -R client push -r . pushing to ssh://user@dummy/server searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 2 changesets with 1 changes to 1 files Checking result --------------- general sentry of all output $ hg --repository server manifest --debug --rev 0 360afd990eeff79e4a7f9f3ded5ecd7bc2fd3b59 644 inside/inside-change 7db95ce5cd8e734ad12e3f5f37779a08070a1399 644 outside/outside-changing 1591f6db41a30b68bd94ddccf4a4ce4f4fbe2a44 644 outside/outside-removed 50ecbc31c0e82dd60c2747c434d1f11b85c0e178 644 root $ hg --repository server manifest --debug --rev 1 360afd990eeff79e4a7f9f3ded5ecd7bc2fd3b59 644 inside/inside-change 486c008d6dddcaeb5e5f99556a121800cdcfb149 644 outside/outside-added 153d7af5e4f53f44475bc0ff2b806c86f019eda4 644 outside/outside-changing 50ecbc31c0e82dd60c2747c434d1f11b85c0e178 644 root $ hg --repository server manifest --debug --rev 2 1b3ab69c6c847abc8fd25537241fedcd4d188668 644 inside/inside-change 7db95ce5cd8e734ad12e3f5f37779a08070a1399 644 outside/outside-changing 1591f6db41a30b68bd94ddccf4a4ce4f4fbe2a44 644 outside/outside-removed 50ecbc31c0e82dd60c2747c434d1f11b85c0e178 644 root $ hg --repository server manifest --debug --rev 3 1b3ab69c6c847abc8fd25537241fedcd4d188668 644 inside/inside-change 486c008d6dddcaeb5e5f99556a121800cdcfb149 644 outside/outside-added 153d7af5e4f53f44475bc0ff2b806c86f019eda4 644 outside/outside-changing 50ecbc31c0e82dd60c2747c434d1f11b85c0e178 644 root The file changed outside should be changed by the merge $ hg --repository server manifest --debug --rev 'desc("inside change")' | grep outside-changing 7db95ce5cd8e734ad12e3f5f37779a08070a1399 644 outside/outside-changing $ hg --repository server manifest --debug --rev 'desc("outside change")' | grep outside-changing 153d7af5e4f53f44475bc0ff2b806c86f019eda4 644 outside/outside-changing $ hg --repository server manifest --debug --rev 'desc("merge")' | grep outside-changing 153d7af5e4f53f44475bc0ff2b806c86f019eda4 644 outside/outside-changing