Mercurial > hg
view tests/test-sparse-verbose-json.t @ 44805:02bf61bb4a70
copy: to find copy source, walk parent of revision we're marking copies in
As shown in the previous patch, `hg cp --after --at-rev . src dst`
fails if `src` is not in `.`. It seems obvious that you should always
walk the *parent* of the revision you're marking copies in, but that's
not how it was done for the working copy, and I didn't think to change
it when marking copies in a non-working-copy commit.
This patch fixes that by walking the parent commit instead, but only
if we're marking copies for a non-working-copy commit. We need to
leave the working-copy code unchanged because it depends on the weird
behavior of `workingctx.walk()`. With these changes, there's very
little overlap between the working-copy version and the
non-working-copy version of `walkpats()`, but I've refrained from
cleaning that up on the stable branch.
Differential Revision: https://phab.mercurial-scm.org/D8494
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 06 May 2020 10:33:56 -0700 |
parents | 9087f9997f42 |
children |
line wrap: on
line source
test sparse with --verbose and -T json $ hg init myrepo $ cd myrepo $ cat > .hg/hgrc <<EOF > [extensions] > sparse= > strip= > EOF $ echo a > show $ echo x > hide $ hg ci -Aqm 'initial' $ echo b > show $ echo y > hide $ echo aa > show2 $ echo xx > hide2 $ hg ci -Aqm 'two' Verify basic --include and --reset $ hg up -q 0 $ hg debugsparse --include 'hide' -Tjson [ { "exclude_rules_added": 0, "files_added": 0, "files_conflicting": 0, "files_dropped": 1, "include_rules_added": 1, "profiles_added": 0 } ] $ hg debugsparse --clear-rules $ hg debugsparse --include 'hide' --verbose removing show Profiles changed: 0 Include rules changed: 1 Exclude rules changed: 0 $ hg debugsparse --reset -Tjson [ { "exclude_rules_added": 0, "files_added": 1, "files_conflicting": 0, "files_dropped": 0, "include_rules_added": -1, "profiles_added": 0 } ] $ hg debugsparse --include 'hide' $ hg debugsparse --reset --verbose getting show Profiles changed: 0 Include rules changed: -1 Exclude rules changed: 0 Verifying that problematic files still allow us to see the deltas when forcing: $ hg debugsparse --include 'show*' $ touch hide $ hg debugsparse --delete 'show*' --force -Tjson pending changes to 'hide' [ { "exclude_rules_added": 0, "files_added": 0, "files_conflicting": 1, "files_dropped": 0, "include_rules_added": -1, "profiles_added": 0 } ] $ hg debugsparse --include 'show*' --force pending changes to 'hide' $ hg debugsparse --delete 'show*' --force --verbose pending changes to 'hide' Profiles changed: 0 Include rules changed: -1 Exclude rules changed: 0