copies: separate added/removed files by newline instead of null
This makes it more consistent with how we encode copies
(newline-separated lists of null-separated pairs). This perhaps makes
{extras} a little less readable (?) despite avoiding the escaping. I
don't know how I feel about this patch. I'm okay with it being queued
or dropped.
Differential Revision: https://phab.mercurial-scm.org/D6486
copies: also encode p[12]copies destination as index into "files" list
This is mostly for consistency with the filesaddes/filesremoved
fields, but it should also save a bit of space.
Differential Revision: https://phab.mercurial-scm.org/D6431
discovery: be more conservative when adjusting the sample size
Since
5b34972a0094, the discovery will increase the sample size when it detect a
"complex" undecided set. However this detection focussed on the number of roots
only, this could regress discovery performance when the undecided set has many
roots that eventually get merged into a few heads.
To prevent such misbehavior, we adjust the logic to take in account both heads
and roots. The sample size will be increased only if both are especially large.
Performance testing on the same case as
5b34972a0094, does not show a
significant difference.
rust-dirstate: create dirstate submodule
This change is here to facilitate a future patch that is written in a
different file. I expect this module to grow a few different files.
Differential Revision: https://phab.mercurial-scm.org/D6389
profiling: show actual time spent in hotpath display
To get, for instance:
...
\ 6.6% 4.08s lock.py: __exit__ line 1566: ...
| 6.5% 4.01s exchange.py: close line 1191: ...
| 6.5% 4.01s transaction.py: _active line 1443: ...
| 6.5% 4.01s transaction.py: close line 47: ...
| 6.2% 3.84s scmutil.py: wrapped line 529: ...
| 6.2% 3.81s localrepo.py: wrapper line 2114: ...
| 6.2% 3.81s localrepo.py: updatecaches line 177: ...
...
instead of:
...
\ 6.6% lock.py: __exit__ line 1566: ...
| 6.5% exchange.py: close line 1191: ...
| 6.5% transaction.py: _active line 1443: ...
| 6.5% transaction.py: close line 47: ...
| 6.2% scmutil.py: wrapped line 529: ...
| 6.2% localrepo.py: wrapper line 2114: ...
| 6.2% localrepo.py: updatecaches line 177: ...
...
I find that if it's not displayed, I frequently end up estimating the
numbers by hand.
Differential Revision: https://phab.mercurial-scm.org/D6477
bookmarks: use correct store for "ambiguity check"
I still don't quite know what the check does, but I clearly got it
wrong in
526750cdd02d (bookmarks: keep bookmarks in .hg/store if new
config set, 2019-05-15). Just compare with the strings we use in
@repofilecache and @storecache. These bugs were then copied to the
stable branch in
c2b83c957621 (localrepo: grab mixedrepostorecache
class from
526750cdd02d, 2019-05-20) and
2338bdea4474 (bookmark: also
make bookmark cache depends of the changelog, 2019-05-20). As a
result, test-wireproto-exchangev2.t is flaky on both branches. This
patch fixes that.
Differential Revision: https://phab.mercurial-scm.org/D6469
root: add template variables pointing to repository directories
These paths are useful for GUI applications to detect changes. A GUI process
typically monitors .hg and .hg/store directories so that it will be notified
on lock/wlock deletion.
Alternatively, maybe we can add debugpaths command if we don't want to extend
the root command. I'm not sure which will be nicer.
root: add support for -Tformatter option
It's useless right now, but it should just work and I want to add a few more
fields.