Siddharth Agarwal <sid0@fb.com> [Wed, 23 Dec 2015 12:51:45 -0800] rev 27599
filemerge: default change/delete conflicts to 'leave unresolved' (BC)
It makes far more sense to leave these conflicts unresolved and kick back to
the user than to just assume that the local version be chosen. There are almost
certainly buggy scripts and applications using Mercurial in the wild that do
merges or rebases non-interactively, and then assume that if the operation
succeeded there's nothing the user needs to pay attention to.
(This wasn't possible earlier because there was no way to re-resolve
change/delete conflicts -- but now it is.)
Siddharth Agarwal <sid0@fb.com> [Wed, 23 Dec 2015 12:41:20 -0800] rev 27598
tests: explicitly request changed version in test-rebase-newancestor.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.
Siddharth Agarwal <sid0@fb.com> [Wed, 23 Dec 2015 12:41:20 -0800] rev 27597
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.
Siddharth Agarwal <sid0@fb.com> [Wed, 23 Dec 2015 12:41:20 -0800] rev 27596
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.
Laurent Charignon <lcharignon@fb.com> [Sat, 26 Dec 2015 19:40:38 -0800] rev 27595
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).
Laurent Charignon <lcharignon@fb.com> [Wed, 23 Dec 2015 11:52:54 -0800] rev 27594
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.
Laurent Charignon <lcharignon@fb.com> [Wed, 23 Dec 2015 13:16:03 -0800] rev 27593
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).
Laurent Charignon <lcharignon@fb.com> [Mon, 21 Dec 2015 16:27:16 -0800] rev 27592
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.
Laurent Charignon <lcharignon@fb.com> [Mon, 21 Dec 2015 16:26:44 -0800] rev 27591
dirstate: add test for non-normal set consistency
This adds a test extension to check that the non-normal set contains the
expected entries. It wraps several methods of the dirstate to check that
the non-normal set has the correct values before and after the call. The
extension lives in contrib so that paranoid developers can easily
enable it to make sure that the non-normal set is consistent across more
complex operations than the included tests.
Laurent Charignon <lcharignon@fb.com> [Fri, 01 Jan 2016 23:40:54 +0100] rev 27590
dirstate: add code to update the non-normal set
Before this patch, we were only populating the non-normal set when parsing
or packing the dirstate. This was not enough to keep the non-normal set up to
date at all time as we don't write and read the dirstate whenever a change
happens. This patch solves this issue by updating the non-normal set when it
should be updated. note: pack_dirstate changes the dmap and we have it keep
it unchanged for retrocompatibility so we are forced to recompute the
non-normal set after calling it.