Ryan McElroy <rmcelroy@fb.com> [Wed, 10 Feb 2016 09:06:08 -0800] rev 28072
merge: minimize conflicts when common base is not shown (issue4447)
Previously, two changes that were nearly, but not quite, identical would result
in large merge conflict regions that looked very similar, and were thus very
confusing to users, and lead people used to other source control systems to
claim that "mercurial's merge algorithms suck". In the relatively common case
of a new file being introduced in two branches with very slight modifications,
the old behavior would show the entire file as a conflict, and it would be very
difficult for a user to determine what was going on.
In the past, mercurial attempted to solve this with a "very smart" algorithm
that would find all common lines, but this has significant problems as
described in 2ea6d906cf9b.
Instead, we use a "very dumb" algorithm introduced in the previous patch that
simply matches lines at the periphery of conflict regions. This minimizes most
conflict regions well, though there may still be some degenerate edge cases,
like small modification to the beginning and end of a large file.
Ryan McElroy <rmcelroy@fb.com> [Wed, 10 Feb 2016 08:25:03 -0800] rev 28071
merge: introduce method to minimize merge regions
In the next diff, we will use this to trim down the start and end of conflict
regions where the A and B sides both made the same changes.
Ryan McElroy <rmcelroy@fb.com> [Tue, 09 Feb 2016 15:25:09 -0800] rev 28070
merge: add some useful documentation
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 19:58:11 +0900] rev 28069
encoding: backport paranoid escaping from templatefilters.jsonescape()
This was introduced by 55c763926a28. It is required to embed JSON data in
HTML page. Convince yourself here:
http://escape.alf.nu/1
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 19:28:34 +0900] rev 28068
encoding: add option to escape non-ascii characters in JSON
This is necessary for hgweb to embed JSON data in HTML. JSON data must be
able to be embedded in non-UTF-8 HTML page so long as the page encoding is
compatible with ASCII.
According to RFC 7159, non-BMP character is represented as UTF-16 surrogate
pair. This function first splits an input string into an array of UTF-16
code points.
https://tools.ietf.org/html/rfc7159.html#section-7
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Jan 2016 19:48:35 +0900] rev 28067
encoding: initialize jsonmap when module is loaded
This makes jsonescape() a thread-safe function, which is necessary for hgweb.
The initialization stuff isn't that slow:
$ python -m timeit -n1000 -s 'from mercurial import encoding as x' 'reload(x)'
original: 1000 loops, best of 3: 158 usec per loop
this patch: 1000 loops, best of 3: 214 usec per loop
compared to loading the commands module:
$ python -m timeit -n1000 -s 'from mercurial import commands as x' 'reload(x)'
1000 loops, best of 3: 1.11 msec per loop
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Jan 2016 19:41:34 +0900] rev 28066
encoding: change jsonmap to a list indexed by code point
This is slightly faster and convenient to implement a paranoid escaping.
$ python -m timeit \
-s 'from mercurial import encoding; data = str(bytearray(xrange(128)))' \
'encoding.jsonescape(data)'
original: 100000 loops, best of 3: 15.1 usec per loop
this patch: 100000 loops, best of 3: 13.7 usec per loop
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 02 Feb 2016 15:24:11 +0000] rev 28065
update: change default destination to tipmost descendant (issue4673) (BC)
Bare 'hg update' now brings you to the tipmost descendant (on the same branch).
Leaving the user on the same topological branch. The previous behavior, updating
to the tipmost changeset on the same branch could lead to jump from a
topological branch to another. This was confusing and impractical. As the only
conceivable reason for the old behavior have been address by the recently
introduce message about other heads, we can "safely" change this behavior
All test changes have been reviewed and seen a valid consequences.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 03 Feb 2016 15:21:11 +0000] rev 28064
test: drop useless --update flag in issue1502 tests
The --update is unrelated to the test and has no effect as it fails anyway.
Dropping it reduces the noise in the coming change in default destination for
update.
Martijn Pieters <mjpieters@fb.com> [Thu, 11 Feb 2016 13:50:38 +0000] rev 28063
treemanifest: don't use cp -T, not supported on OS X
The OS X cp implementation has no -T switch. Copy directory contents using a
glob instead.