Yuya Nishihara <yuya@tcha.org> [Sat, 16 Sep 2017 22:55:48 +0900] rev 34218
py3: use 'surrogatepass' error handler to process U+DCxx transparently
It's disallowed by default on Python 3.
https://docs.python.org/3/library/codecs.html#error-handlers
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Sep 2017 22:42:19 +0900] rev 34217
py3: don't pass bytes to array.array()
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 15:54:29 +0900] rev 34216
py3: wrap bytes in encoding.from/toutf8b() with bytestr
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 17:28:47 +0900] rev 34215
py3: iterate bytes as a byte string in store.lowerencode()
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 17:27:50 +0900] rev 34214
py3: use bytechr() in store._buildlowerencodefun()
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 17:26:10 +0900] rev 34213
store: give name to lowerencode function
lambda function isn't easy to track in traceback.
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 15:32:45 +0900] rev 34212
py3: iterate bytes as a byte string in dagparser.py
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 15:28:39 +0900] rev 34211
py3: wrap string constants in dagparser.py with bytestr()
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 15:25:50 +0900] rev 34210
py3: drop use of str() in dagparser.py
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 15:22:54 +0900] rev 34209
dagparser: fix variable name in error message
There's no variable named 'type'.
Yuya Nishihara <yuya@tcha.org> [Sun, 03 Sep 2017 17:47:21 +0900] rev 34208
py3: convert function name to bytes in ui.configwith()
Augie Fackler <raf@durin42.com> [Wed, 23 Aug 2017 01:23:16 -0400] rev 34207
drawdag: port to python 3
Augie Fackler <raf@durin42.com> [Wed, 23 Aug 2017 10:51:26 -0400] rev 34206
drawdag: add a couple of doctests to help with python3 porting
Augie Fackler <raf@durin42.com> [Wed, 23 Aug 2017 01:24:01 -0400] rev 34205
drawdag: tagsmod.tag() takes a list of names, not a single name
We were getting lucky on Python 2 since we have only one-byte names,
but on Python 3 badness was happening.
Augie Fackler <raf@durin42.com> [Wed, 23 Aug 2017 01:22:59 -0400] rev 34204
bruterebase: port to python 3
Augie Fackler <raf@durin42.com> [Tue, 22 Aug 2017 21:21:13 -0400] rev 34203
exchange: use '%d' % x instead of str(x) to encode ints
Recommended by Yuya instead of using pycompat.bytestr() in this case.
Augie Fackler <raf@durin42.com> [Fri, 15 Sep 2017 19:44:32 -0400] rev 34202
posix: always pass a native str to unicodedata.normalize's first arg
Augie Fackler <raf@durin42.com> [Fri, 15 Sep 2017 19:44:05 -0400] rev 34201
posix: use slicing to grab a single byte out of a bytes in HFS+ normcase code
Augie Fackler <raf@durin42.com> [Fri, 15 Sep 2017 19:43:32 -0400] rev 34200
encoding: ensure getutf8char always returns a bytestr, never an int
Augie Fackler <raf@durin42.com> [Fri, 15 Sep 2017 19:43:02 -0400] rev 34199
posix: fix HFS+ normcase doctest to produce valid bytes literals in Python 3
We were previously getting lucky on Python 2.
Augie Fackler <augie@google.com> [Fri, 15 Sep 2017 22:08:25 -0400] rev 34198
tests: add and remove some (glob) markers
I have no idea if these changes are reasonable, but they look like
they'd help on the Windows buildbot.
Augie Fackler <raf@durin42.com> [Mon, 18 Sep 2017 11:53:54 -0400] rev 34197
Added signature for changeset
920977f72c7b
Augie Fackler <raf@durin42.com> [Mon, 18 Sep 2017 11:53:53 -0400] rev 34196
Added tag 4.3.2 for changeset
920977f72c7b
Augie Fackler <augie@google.com> [Mon, 18 Sep 2017 11:51:41 -0400] rev 34195
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 31 Jul 2017 12:18:42 -0300] rev 34194
i18n-pt_BR: synchronized with
850d2ec2cf6a
Boris Feld <boris.feld@octobus.net> [Fri, 15 Sep 2017 18:57:50 +0200] rev 34193
hgwebdir: read 'web.template' untrusted
The 'hgweb_mod.py' version of this read it untrusted. For consistency we align
the two versions of this code.
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 24 Aug 2017 22:55:56 +0530] rev 34192
uncommit: move fb-extension to core which uncommits a changeset
uncommit extension in fb-hgext adds a uncommit command which by default
uncommits a changeset and move all the changes to the working directory. If
file names are passed, uncommit moves the changes from those files to the
working directory and left the changeset with remaining committed files.
The uncommit extension in fb-hgext does not creates an empty commit like the one
in evolve extension unless user has specified ui.alllowemptycommit to True.
The test file added is a combination of tests from test-uncommit.t,
test-uncommit-merge.t and test-uncommit-bookmark.t from fb-hgext.
.. feature::
A new uncommit extension which provides `hg uncommit` using which one can
uncommit part or all of the changeset. This command undoes the effect of a
local commit, returning the affected files to their uncommitted state.
Differential Revision: https://phab.mercurial-scm.org/D529
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 13 Sep 2017 21:15:46 -0700] rev 34191
show: use consistent (and possibly shorter) node lengths
`hg show` makes heavy use of shortest() to limit the length of the node
hash.
For the "stack" and "work" views, you are often looking at multiple
lines of similar output for "lines" of work. It is visually appeasing
for things to vertically align. A naive use of {shortest(node, N)}
could result in variable length nodes and for the first character of
the description to vary by a column or two.
We implement a function to determine the longest shortest prefix for
a set of revisions. The new function is used to determine the printed
node length for all `hg show` views.
.. feature::
show: use consistent node length in views
Our previous shortest node length of 5 was arbitrarily chosen.
shortest() already does the work of ensuring that a partial node
isn't ambiguous with an integer revision, which is our primary risk
of a collision for very short nodes. It should be safe to go with the
shortest node possible.
Existing code is also optimized to handle nodes as short as 4.
So, we decrease the minimum hash length from 5 to 4.
We also add a test demonstrating that prefix collisions increase the
node length.
.. feature::
show: decrease minimum displayed hash length from 5 to 4
Differential Revision: https://phab.mercurial-scm.org/D558
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Aug 2017 21:51:34 -0700] rev 34190
show: pass the minimum length for nodes as a template keyword
This will allow us to make the displayed length configurable
and/or dynamic.
Differential Revision: https://phab.mercurial-scm.org/D556
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Aug 2017 21:13:27 -0700] rev 34189
cmdutil: allow extra properties to be added to each context
The changeset displayer allows setting extra keywords to be available
to the templating layer. This patch adds an argument to displaygraph()
to pass a dict of extra properties to be available to every changeset.
Differential Revision: https://phab.mercurial-scm.org/D555
Michael Bolin <mbolin@fb.com> [Thu, 14 Sep 2017 09:41:22 -0700] rev 34188
dirstate: perform transactions with _map using single call, where possible
This is in the same style as https://phab.mercurial-scm.org/D493.
In general, this replaces patterns such as:
```
f in self._map:
entry = self._map[f]
```
with:
```
entry = self._map.get(f):
if entry is not None:
# use entry
```
Test Plan:
`make tests`
Differential Revision: https://phab.mercurial-scm.org/D663
Boris Feld <boris.feld@octobus.net> [Tue, 05 Sep 2017 00:34:13 +0200] rev 34187
extensions: register config item early
Config items are likely to be used in during extensions setup. So we much
register them before that.
For example this apply to the 'win32text.warn' options.
Boris Feld <boris.feld@octobus.net> [Tue, 05 Sep 2017 00:31:59 +0200] rev 34186
extensions: factor extra data loading out
Some of the extra data need to be registered earlier than they currently are
(eg: config items). We first factor out the logic to registered them in a small
function before reusing it in the next changeset.
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:45:56 +0200] rev 34185
configitems: register the 'win32text.warn' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:17 +0200] rev 34184
configitems: register the 'mq.secret' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:16 +0200] rev 34183
configitems: register the 'mq.plain' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:15 +0200] rev 34182
configitems: register the 'mq.keepchanges' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:14 +0200] rev 34181
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:45:54 +0200] rev 34180
configitems: register the 'win32mbcs.encoding' config
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 03 Sep 2017 03:49:15 +0530] rev 34179
copytrace: move fast heuristic copytracing algorithm to core
copytrace extension in fb-hgext has a heuristic implementation of copy tracing
which is faster than the current copy tracing. The heuristic limits the search
of copies to just files that are either:
1) Renames in the same directory
2) Moved to other directory with same name
The default copytrace implementation is very slow as it finds all the new files
that were added from merge base up to the head commit and for each file it
checks whether it this was copied or moved version of a different file.
Stash@fb did analysis for the above heuristics on the fb repo and found that
among 2,443,768 moves/copies there are only 32,234 moves/copies which does not
fall under the above heuristics which is approx. 0.013 of total copies.
This patch moves the heuristics algorithm under config
`experimental.copytrace=heuristics`.
While moving fbext to core, this patch removes couple of less useful config
options named `sourcecommitlimit` and `maxmovescandidatestocheck`.
Tests are also added for the heuristics algorithm, which are basically copied
from fbext/tests/test-copytrace.t. The tests follow a pattern creating a server
repo and then cloning to a local repo to create public and draft changesets, the
distinction which will be useful in upcoming patches.
After this patch `experimental.copytrace` has the following behaviour:
1) `off`: turns off copytracing
2) `heuristics`: use the heuristic algorithm added in this patch.
3) everything else: use the full copytracing algorithm
.. feature::
A new fast heuristic algorithm for copytracing which assumes that the files
moves are either::
1) Renames in the same directory
2) Moves in other directories with same names
You can use this algorithm by setting `experimental.copytrace=heuristics`.
Differential Revision: https://phab.mercurial-scm.org/D623
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:36:46 +0200] rev 34178
configitems: register the 'convert.svn.startrev' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:36:36 +0200] rev 34177
configitems: register the 'convert.svn.debugsvnlog' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:36:28 +0200] rev 34176
configitems: register the 'convert.skiptags' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:36:20 +0200] rev 34175
configitems: register the 'convert.p4.startrev' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:36:00 +0200] rev 34174
configitems: register the 'convert.localtimezone' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:35:55 +0200] rev 34173
configitems: register the 'convert.ignoreancestorcheck' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:35:48 +0200] rev 34172
configitems: register the 'convert.hg.usebranchnames' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:35:38 +0200] rev 34171
configitems: register the 'convert.hg.tagsbranch' config