tests: explicitly request changed version in c/d conflict in test-commit-amend.t
We're going to change the default for this in an upcoming patch, but in this
instance we do want to continue picking the changed version.
test-copy-move-merge.t: explicitly request changed version
We're going to change the default for this in an upcoming patch, but in this
instance we do want to continue picking the changed version.
match: add option to return line and lineno from readpattern
This will be used to display the line and linenumber of ignorefile that matched
an ignored file (
issue4856).
dirstate: extract logic to compute the list of ignorefiles
We are going to reuse this logic to improve debugignore in the next patches
of the series.
dirstate: call the C implementation of nonnonormalentries when available
Before this patch, we were using python code for computing the nonnormal
dirstate entries. This patch makes us use the C implementation of the function
when it is available.
Using the nonnormal set in hgwatchman improves hg status performance. Below
are the numbers for mozilla-central.
with the changes:
$ hg perfstatus
! wall 0.010632 comb 0.000000 user 0.000000 sys 0.000000 (best of 246)
without the changes:
$ hg perfstatus
! wall 0.036442 comb 0.030000 user 0.030000 sys 0.000000 (best of 100)
On mozilla-central the improvement to hg status is ~20% (0.25s to 0.2s),
on our big repos at Facebook, the win is ~40% (1.2s to 0.72s).
dirstate: add a C implementation for nonnormalentries
Before this patch, there was only a python version of nonnormalentries.
On mozilla-central we have a 10x win by putting this function in C:
% python -m timeit -s \
'from mercurial import hg, ui, parsers; \
repo = hg.repository(ui.ui(), "mozilla-central"); \
m = repo.dirstate._map' \
'parsers.nonnormalentries(m)'
100 loops, best of 3: 3.15 msec per loop
The python implementation runs in 31ms, a similar test gives:
10 loops, best of 3: 31.7 msec per loop
On our big repos, the win is still of 10x with the python implementation running
in 350ms and the C implementation running in 30ms.