Aay Jay Chan <aayjaychan@itopia.com.hk> [Fri, 22 May 2020 22:20:37 +0800] rev 44921
help: fix description of revlog version 2
Differential Revision: https://phab.mercurial-scm.org/D8576
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Tue, 26 May 2020 08:15:09 -0400] rev 44920
files: speed up `hg files` when no flags change display
It's not the first time I see slowness from this command slow down
tools built on top of hg.
The majority of the time is spent merely printing the result before
this change, which is clearly not how it should be (especially since
the computation of the result also looks slow).
Running `hg files` in mozilla-central:
parent revision: 1,260s
this commit: 0,683s
this commit without batching ui.write: 0,931s
this commit replacing the body of the loop with `pass`: 0,566s
This looks like a prime candidate for a rust fast path, but until
then, it seems reasonable to optimize the python.
Differential Revision: https://phab.mercurial-scm.org/D8586
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 25 May 2020 22:47:12 -0400] rev 44919
sshpeer: make client print (likely) server errors on stderr (BC)
so `hg clone -q` or `hg pull -q` don't print `abort: no suitable
response from remote hg!` with no indication of what went wrong.
There are other errors still silenced by -q (like failing to push due
to a server hook), but the current change covers a good fraction of
the problem (all errors setting up the ssh connection, no such remote
repository, no access to the repository).
Differential Revision: https://phab.mercurial-scm.org/D8584
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 25 May 2020 20:02:15 -0400] rev 44918
sshpeer: add test showing that -q silences remote errors
Differential Revision: https://phab.mercurial-scm.org/D8583
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Tue, 26 May 2020 07:03:11 -0400] rev 44917
scmutil: speed up relativization of paths when it's a no-op
Running commands from the root is commmon, in particular for
automation. Running `hg files > /tmp/a` from the root of
mozilla-central on linux:
before:
real 0m1,510s
user 0m1,387s
sys 0m0,090s
after:
real 0m1,266s
user 0m1,165s
sys 0m0,073s
(there are 280k paths, so this was costing ~1us per path somehow)
Differential Revision: https://phab.mercurial-scm.org/D8585
Augie Fackler <augie@google.com> [Mon, 18 May 2020 16:00:26 -0400] rev 44916
context: implement mergestate() method
This will let us have the mergestate storage be controlled by the context. In
particular, for working contexts we should use the existing mergestate, but
for overlay contexts it's inappropriate to drop files in .hg/merge.
Differential Revision: https://phab.mercurial-scm.org/D8551
Augie Fackler <augie@google.com> [Mon, 18 May 2020 14:59:59 -0400] rev 44915
mergestate: split out merge state handling code from main merge module
There's already some pretty reasonable encapsulation here, but I want
to make the mergestate storage a property of the context so memctx
instances can do a reasonable thing. This is the first step in a
reshuffle to make that easier.
Differential Revision: https://phab.mercurial-scm.org/D8550
Augie Fackler <augie@google.com> [Mon, 18 May 2020 12:45:45 -0400] rev 44914
tests: add coverage for repo.changelog.children() in the git extension
Differential Revision: https://phab.mercurial-scm.org/D8548
Augie Fackler <augie@google.com> [Mon, 18 May 2020 12:41:16 -0400] rev 44913
tests: add coverage for repo.changelog.findmissing() in test-git-interop.t
This at least does a basic test of the method. It's not
super-complete, but it's better than the nothing we'd otherwise have.
Differential Revision: https://phab.mercurial-scm.org/D8547
Augie Fackler <augie@google.com> [Mon, 18 May 2020 13:18:05 -0400] rev 44912
relnotes: add API change note per request in D8502
Differential Revision: https://phab.mercurial-scm.org/D8549
Martin von Zweigbergk <martinvonz@google.com> [Tue, 26 May 2020 08:07:24 -0700] rev 44911
merge with stable
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 17 May 2020 18:33:45 -0400] rev 44910
grep: grep the working copy faster
`hg grep qqqq` in the mercurial repo:
before: 0,859s
after: 0,233s
`hg grep somethingwithnomatch` in mozilla-central:
before: 51s
after: 19s
This is probably also a tiny bug fix, because the code was looking up
a node for filename `pfn` on a filelog for filename `fn`, which are
most of the time the same filename, but don't have to be.
Ignoring performance and the bug fix, the code should have the same
behavior.
Differential Revision: https://phab.mercurial-scm.org/D8545
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 17 May 2020 13:10:54 -0400] rev 44909
grep: stop computing information for --diff when unnecessary
This is one reason why `hg grep pattern` essentially does `hg cat -r
. 'set:**'` inside. There is no speed improvement in this commit,
because the rest of the code still greps data from filelog instead of
working copy when possible.
Differential Revision: https://phab.mercurial-scm.org/D8544
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 17 May 2020 12:52:43 -0400] rev 44908
grep: don't go in an infinite loop when given empty regex
Differential Revision: https://phab.mercurial-scm.org/D8543