Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 May 2020 11:41:37 -0700] rev 44883
tests: show poor error message for `hg cp -A --at-rev . non-existent dst`
Differential Revision: https://phab.mercurial-scm.org/D8495
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 May 2020 10:33:56 -0700] rev 44882
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
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 May 2020 11:41:01 -0700] rev 44881
tests: show that `hg cp -A --at-rev .` doesn't work for renames
I clearly forgot to implement (and test) support for marking of
renames when I added support for marking of copies :(
Differential Revision: https://phab.mercurial-scm.org/D8493
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 May 2020 14:33:46 +0200] rev 44880
rust-matchers: add TODO about incomplete `Display` for `IncludeMatcher`
This is purely for future reference, I don't think this is a problem right now,
since the `Display` is *only* used to ease debugging and has no real users.
Differential Revision: https://phab.mercurial-scm.org/D8492
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 May 2020 11:17:27 +0200] rev 44879
rust-filepatterns: match exact `rootglob`s with a `HashSet`, not in the regex
This optimization yields some very interesting results in `rootglob`-heavy
repositories.
I build a test repository of the following structure:
```
root
/<uuid>/build/empty_file
... repeat for 4000 entries
```
and a `.hgignore` containing the corresponding 4000 `rootglob` entries pointing
to all `build/` folders.
Rust+c `hg status` goes from 350ms down to 110ms.
Differential Revision: https://phab.mercurial-scm.org/D8491
Mitchell Plamann <mplamann@janestreet.com> [Wed, 15 Apr 2020 16:43:05 -0400] rev 44878
dirstate: force _checkexec to return a bool
posix.checkexec can return True, False, or None. The rust status
implementation expects a boolean, so make sure _checkexec returns a boolean.
Differential Revision: https://phab.mercurial-scm.org/D8432
Kyle Lippincott <spectral@google.com> [Tue, 21 Apr 2020 13:37:45 -0700] rev 44877
locking: wait for locks in `hg cp` and `hg mv`
I traced this back to revision 1822 (64df422), and there's no explanation why we
would prefer to error out instead of waiting for the locks.
Differential Revision: https://phab.mercurial-scm.org/D8464