Sun, 09 Oct 2016 15:54:42 +0200 eol: store and reuse pattern matchers instead of creating in tight loop
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Oct 2016 15:54:42 +0200] rev 30114
eol: store and reuse pattern matchers instead of creating in tight loop More "right" and more efficient.
Sun, 09 Oct 2016 15:42:42 +0200 eol: fix variable naming - call it _eolmatch instead of _eolfile
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Oct 2016 15:42:42 +0200] rev 30113
eol: fix variable naming - call it _eolmatch instead of _eolfile It is not the file but a match object based on it.
Sun, 09 Oct 2016 13:50:53 +0200 parsers: move PyInt aliasing out of util.h
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 09 Oct 2016 13:50:53 +0200] rev 30112
parsers: move PyInt aliasing out of util.h The PyInt aliasing is only used by parsers.c. Since we don't want to encourage the use of PyInt parsing, move the aliasing to parsers.c.
Sun, 09 Oct 2016 13:47:46 +0200 osutil: use PyLongObject on Python 3 for listdir_slot
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 09 Oct 2016 13:47:46 +0200] rev 30111
osutil: use PyLongObject on Python 3 for listdir_slot This code looks performance sensitive. So let's retain PyIntObject on Python 2 and use PyLongObject explicitly on Python 3.
Sun, 09 Oct 2016 13:41:18 +0200 osutil: use PyLongObject in recvfds
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 09 Oct 2016 13:41:18 +0200] rev 30110
osutil: use PyLongObject in recvfds PyIntObject doesn't exist in Python 3. While PyIntObject is preferred on Python 2 because it is a fixed capacity and faster, the difference between PyIntObject and PyLongObject for scenarios where performance isn't critical or the caller isn't performing type checking shouldn't be relevant. So change recvfds to return a list of longs instead of ints on Python 2.
Sun, 09 Oct 2016 12:37:10 +0200 py3: use encoding.environ instead of os.environ
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 09 Oct 2016 12:37:10 +0200] rev 30109
py3: use encoding.environ instead of os.environ This complains while running hg version on Python 3.5
Sun, 09 Oct 2016 12:58:22 +0200 store: py26 compat, don't use a dict comprehension
Martijn Pieters <mjpieters@fb.com> [Sun, 09 Oct 2016 12:58:22 +0200] rev 30108
store: py26 compat, don't use a dict comprehension
Sat, 08 Oct 2016 16:51:18 +0200 dirs: document performance reasons for bypassing Python C API
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 16:51:18 +0200] rev 30107
dirs: document performance reasons for bypassing Python C API So someone isn't tempted to change it.
Sat, 08 Oct 2016 16:20:21 +0200 dirs: port PyInt code to work on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 16:20:21 +0200] rev 30106
dirs: port PyInt code to work on Python 3 PyIntObject no longer exists in Python 3. Instead, there is PyLongObject. Furthermore, PyInt_AS_LONG is a macro referencing a struct member. PyInt_AS_LONG doesn't exist in Python 3 and PyLong_AS_LONG is a #define for PyLong_AsLong, which is a function. So assigning to the return value of PyLong_AS_LONG doesn't work. This patch introduces a macro for obtaining the value of an integer-like type that works on Python 2 and Python 3. On Python 3, we access the struct field of the underlying PyLongObjet directly, without overflow checking. This is essentially the same as what Python 2 was doing except using a PyLong instead of a PyInt.
Sat, 08 Oct 2016 14:31:59 +0200 dirs: convert PyString to PyBytes
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 14:31:59 +0200] rev 30105
dirs: convert PyString to PyBytes PyStringObject was renamed to PyBytes in Python 3 along with the corresponding PyString* functions and macros. PyString* doesn't exist in Python 3. But PyBytes* is an alias to PyString in Python 2. So rewrite PyString* to PyBytes* for Python 2/3 dual compatibility.
Sat, 08 Oct 2016 16:02:51 +0200 dirs: inline string macros
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 16:02:51 +0200] rev 30104
dirs: inline string macros The old code happened to work because of how the macro was defined. This no longer works in Python 3. Furthermore, assigning to a macro just feels weird. So just inline the macro.
Sat, 08 Oct 2016 22:44:02 +0200 parsers: use PyVarObject_HEAD_INIT
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 22:44:02 +0200] rev 30103
parsers: use PyVarObject_HEAD_INIT The macro changed slightly in Python 3, introducing curly brackets that somehow confuse Clang into issuing a ton of compiler warnings. Using PyVarObject_HEAD_INIT makes these go away. It's worth noting that the code is identical: the 2nd argument to PyVarObject_HEAD_INIT is assigned to the ob_size field and is inserted immediately after "PyObject_HEAD_INIT(type)" is generated. Compilers are weird.
Sat, 08 Oct 2016 22:21:22 +0200 pathencode: use Py_SIZE directly
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 22:21:22 +0200] rev 30102
pathencode: use Py_SIZE directly On Python 2, PyBytes_GET_SIZE is the same as PyString_GET_SIZE which is the same as Py_SIZE which resolves to a struct member. On Python 3, PyBytes_GET_SIZE is "(assert(PyBytes_Check(op)),Py_SIZE(op))". The compiler barfs when assigning to this version. This patch simply changes PyBytes_GET_SIZE to Py_SIZE. On Python 2, there is no effective change in behavior. On Python 3, we drop the PyBytes_Check(). However, in all cases we have explicitly created a PyBytesObject in the same function, so the PyBytes_Check() is guaranteed to be true. Despite this, code changes over time, so I've added added assert() in all callers so we can catch this in debug builds. With this patch, all mercurial.* C extensions now compile on Python 3 on my OS X machine. There are several compiler warnings and I'm sure there are incompatibilities with Python 3, including possibly segfaults. But it is a milestone.
Sat, 08 Oct 2016 22:04:56 +0200 util: remove PyString* aliases on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 22:04:56 +0200] rev 30101
util: remove PyString* aliases on Python 3 We no longer have any users of the legacy PyString* functions. We no longer need these redefinitions. After this change, the only reference to "PyString" in the repo is in watchman's C extension. That isn't our code and porting Mercurial extensions to Python 3 is not a high priority at the moment. watchman's C extension will be dealt with later.
Sat, 08 Oct 2016 22:02:29 +0200 parsers: convert PyString* to PyBytes*
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 22:02:29 +0200] rev 30100
parsers: convert PyString* to PyBytes* With this change, we no longer have any occurrences of "PyString" in our C extensions.
Sat, 08 Oct 2016 22:01:07 +0200 pathencode: convert PyString* to PyBytes*
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 22:01:07 +0200] rev 30099
pathencode: convert PyString* to PyBytes*
Sat, 08 Oct 2016 21:58:55 +0200 osutil: convert PyString* to PyBytes*
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 21:58:55 +0200] rev 30098
osutil: convert PyString* to PyBytes* Continuing the conversion from PyString* to PyBytes*.
Sat, 08 Oct 2016 21:57:55 +0200 manifest: convert PyString* to PyBytes*
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 21:57:55 +0200] rev 30097
manifest: convert PyString* to PyBytes* Python 2.6 introduced PyBytesObject and PyBytes* as aliases for PyStringObject and PyString*. So on Python 2.6+, PyBytes* and PyString* are identical and this patch should be a no-op. On Python 3, PyStringObject is effectively renamed to PyUnicodeObject and PyBytesObject becomes the main type for byte strings. This patch begins the process of mass converting PyString* to PyBytes* so the C extensions use the correct type on Python 3.
Sun, 02 Oct 2016 17:31:32 +0900 merge: update doc of manifestmerge() per 18c2184c27dc
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Oct 2016 17:31:32 +0900] rev 30096
merge: update doc of manifestmerge() per 18c2184c27dc p1 was renamed to wctx by 18c2184c27dc.
Sat, 08 Oct 2016 17:22:40 +0200 py3: remove superfluous indent from check-py3-compat.py
Yuya Nishihara <yuya@tcha.org> [Sat, 08 Oct 2016 17:22:40 +0200] rev 30095
py3: remove superfluous indent from check-py3-compat.py
Sat, 08 Oct 2016 17:22:07 +0200 py3: make check-py3-compat.py load modules in standard manner
Yuya Nishihara <yuya@tcha.org> [Sat, 08 Oct 2016 17:22:07 +0200] rev 30094
py3: make check-py3-compat.py load modules in standard manner Otherwise no code transformation would be applied to the modules which are imported only by imp.load_module(). This change means modules are imported from PYTHONPATH, not from the paths given by command arguments. This isn't always correct, but seems acceptable.
Sun, 09 Oct 2016 08:31:39 +0200 py3: include module filename in check-py3-compat.py output
Yuya Nishihara <yuya@tcha.org> [Sun, 09 Oct 2016 08:31:39 +0200] rev 30093
py3: include module filename in check-py3-compat.py output This change is intended to reduce noises in the next patch.
Sat, 08 Oct 2016 19:16:50 +0200 util: document we want Python type mapping to be temporary
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 19:16:50 +0200] rev 30092
util: document we want Python type mapping to be temporary I think remapping Python C API types and functions is not a great approach. I'd prefer this whole #ifdef disappeared. Add a comment so we don't forget about it.
Sat, 08 Oct 2016 19:02:44 +0200 util: define PyInt_Type on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 19:02:44 +0200] rev 30091
util: define PyInt_Type on Python 3 util.h attempts to wallpaper over C API differences between Python 2 and 3. This is not the correct approach where performance is critical. But it is good enough for the current state of the Python 3 port.
Sat, 08 Oct 2016 17:51:29 +0200 parsers: return NULL from PyInit_parsers on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 17:51:29 +0200] rev 30090
parsers: return NULL from PyInit_parsers on Python 3 This function must return a PyObject* or the compiler complains.
Wed, 05 Oct 2016 13:45:22 +0200 mail: take --encoding and HGENCODING into account
Gábor Stefanik <gabor.stefanik@nng.com> [Wed, 05 Oct 2016 13:45:22 +0200] rev 30089
mail: take --encoding and HGENCODING into account Fall back to our encoding strategy for sending MIME text that's neither ASCII nor UTF-8.
Sat, 08 Oct 2016 02:26:48 -0700 template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com> [Sat, 08 Oct 2016 02:26:48 -0700] rev 30088
template: provide a termwidth keyword (issue5395) We want to provide terminal-sized output. As a starting point, expose the terminal width to the templater for use in things like fill.
Sat, 08 Oct 2016 08:36:39 -0400 util: ensure forwarded attrs are set in globals() as sysstr
Augie Fackler <augie@google.com> [Sat, 08 Oct 2016 08:36:39 -0400] rev 30087
util: ensure forwarded attrs are set in globals() as sysstr Custom module importer strikes again.
Sat, 08 Oct 2016 08:35:43 -0400 pycompat: when setting attrs, ensure we use sysstr
Augie Fackler <augie@google.com> [Sat, 08 Oct 2016 08:35:43 -0400] rev 30086
pycompat: when setting attrs, ensure we use sysstr The custom module importer was making these bytes, so when we poked values into self.__dict__ we had bytes instead of unicode on py3 and it didn't work.
Sat, 08 Oct 2016 05:26:18 -0400 i18n: make the locale directory name the same string type as the datapath
Augie Fackler <augie@google.com> [Sat, 08 Oct 2016 05:26:18 -0400] rev 30085
i18n: make the locale directory name the same string type as the datapath
Sat, 08 Oct 2016 10:39:00 -0400 contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com> [Sat, 08 Oct 2016 10:39:00 -0400] rev 30084
contributing: add new file with a pointer to the wiki This also includes what I consider to be the minimum set of steps someone should be able to perform even if they can't run the testsuite. Hopefully this will help new contributors know to at least run the two checkers that find most things that (in my experience) require manual cleanup.
Sat, 08 Oct 2016 15:24:26 +0200 templater: add relpath() to convert repo path to relative path (issue5394)
Yuya Nishihara <yuya@tcha.org> [Sat, 08 Oct 2016 15:24:26 +0200] rev 30083
templater: add relpath() to convert repo path to relative path (issue5394) File paths in template are repository-absolute paths. This function can be used to convert them to filesystem paths relative to cwd. This also converts '/' to '\\' on Windows.
Sat, 08 Oct 2016 19:11:19 +0200 hgweb: fix the MRO in Python 3
Martijn Pieters <mjpieters@fb.com> [Sat, 08 Oct 2016 19:11:19 +0200] rev 30082
hgweb: fix the MRO in Python 3 object should appear at the end, otherwise it tries to pre-empt the other new-style classes in the MRO, resulting in an unresolvable MRO in Py3. We still need to include object because otherwise in 2.7 we end up with an old-style class if threading is not supported, new-style if it is.
Sat, 08 Oct 2016 16:10:34 +0100 hgweb: make fctx.annotate a separated function so it could be wrapped
Jun Wu <quark@fb.com> [Sat, 08 Oct 2016 16:10:34 +0100] rev 30081
hgweb: make fctx.annotate a separated function so it could be wrapped This patch moves "fctx.annotate" used by the "annotate" webcommand, along with the diffopts to a separated function which takes a ui and a fctx. So it could be replaced by other implementations which don't want to replace the core "fctx.annotate" directly.
Tue, 04 Oct 2016 20:49:59 +0800 zsh_completion: update some option usage flags ('+', '=' and ':')
Anton Shestakov <av6@dwimlabs.net> [Tue, 04 Oct 2016 20:49:59 +0800] rev 30080
zsh_completion: update some option usage flags ('+', '=' and ':') Here are the relevant symbol descriptions from [0] optspec:... The colon indicates handling for one or more arguments to the option; if it is not present, the option is assumed to take no arguments. -optname+ The first argument may appear immediately after optname in the same word, or may appear as a separate word after the option. For example, ‘-foo+:...’ specifies that the completed option and argument will look like either ‘-fooarg’ or ‘-foo arg’. -optname= The argument may appear as the next word, or in same word as the option name provided that it is separated from it by an equals sign, for example ‘-foo=arg’ or ‘-foo arg’. There are 3 types of changes in this patch: - addition of '=': means that '--repository ~/foo' can now also be spelled as '--reporitory=~/foo' - addition of '+': means '-r 0' can now also be spelled as '-r0' - removal of '+', '=' and ':': means that '-u|--untrusted' doesn't take any arguments, so '-uq' is definitely '-u -q' and not '--untrusted=q' Occasionally, ':' had to be added together with '=' and '+'. This patch is mostly just making zsh_completion file look more like zsh's own hg completion file so that we can more easily take improvements from them or send patches to them. Some context for this patch from zsh project: [2] [3]. [0]: http://zsh.sourceforge.net/Doc/Release/Completion-System.html [1]: https://sourceforge.net/p/zsh/code/ci/master/tree/Completion/Unix/Command/_hg [2]: https://sourceforge.net/p/zsh/code/ci/92584634d3d39e9ca64475ae5af8010e2ccebe24/ [3]: http://www.zsh.org/mla/workers/2015/msg02551.html
Sat, 08 Oct 2016 18:04:57 +0200 manifest: drop Py_TPFLAGS_HAVE_SEQUENCE_IN from tp_flags in Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Oct 2016 18:04:57 +0200] rev 30079
manifest: drop Py_TPFLAGS_HAVE_SEQUENCE_IN from tp_flags in Python 3 This flag disappeared in Python 3. It is only necessary in Python 2, apparently.
Sat, 08 Oct 2016 05:26:58 -0700 import: abort instead of crashing when copy source does not exist (issue5375)
Ryan McElroy <rmcelroy@fb.com> [Sat, 08 Oct 2016 05:26:58 -0700] rev 30078
import: abort instead of crashing when copy source does not exist (issue5375) Previously, when a patch contained a move or copy from a source that did not exist, `hg import` would crash. This patch changes import to raise a PatchError with an explanantion of what is wrong with the patch to avoid the stack trace and bad user experience.
Sat, 08 Oct 2016 08:54:05 -0700 py3: make encodefun in store.py compatible with py3k
Mateusz Kwapich <mitrandir@fb.com> [Sat, 08 Oct 2016 08:54:05 -0700] rev 30077
py3: make encodefun in store.py compatible with py3k This ensures that the filename encoding functions always map bytestrings to bytestrings regardless of python version.
Sat, 08 Oct 2016 08:45:28 -0700 py3: make the string unicode so its iterable in py3k
Mateusz Kwapich <mitrandir@fb.com> [Sat, 08 Oct 2016 08:45:28 -0700] rev 30076
py3: make the string unicode so its iterable in py3k
Mon, 03 Oct 2016 13:29:59 +0200 copies: don't record divergence for files needing no merge
Gábor Stefanik <gabor.stefanik@nng.com> [Mon, 03 Oct 2016 13:29:59 +0200] rev 30075
copies: don't record divergence for files needing no merge This is left over from when _checkcopies was factored out from mergecopies. The 2nd break has "of = None" before it, so it's a functionally equivalent change. The 1st one, however, causes a divergence to be recorded when a file has been renamed, but there is nothing to be merged to it. This is currently harmless, since the extra divergence is simply ignored later. However, the new _checkcopies introduced in the rest of this series does more than just record a divergence after completing the main loop, and it's important that the "post-processing" stage is really skipped for no-merge-needed renames.
Sat, 08 Oct 2016 19:32:54 +0900 hgweb: avoid line wrap between revision and annotate-info (issue5398)
Tooru Fujisawa <arai.unmht@gmail.com> [Sat, 08 Oct 2016 19:32:54 +0900] rev 30074
hgweb: avoid line wrap between revision and annotate-info (issue5398) Add white-space: nowrap to td.annotate to avoid wrapping div.annotate-info into next line if there is revision number in the same cell, as it is hard to mouse over div.annotate-info if it's wrapped into next line.
Sat, 08 Oct 2016 16:10:58 +0200 py3: make format strings unicodes and not bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 08 Oct 2016 16:10:58 +0200] rev 30073
py3: make format strings unicodes and not bytes Fixes issues on Python 3, wherein docstrings are unicodes. Shouldn't break anything on Python 2.
Fri, 07 Oct 2016 17:30:11 +0200 mail: handle renamed email.Header
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 07 Oct 2016 17:30:11 +0200] rev 30072
mail: handle renamed email.Header We are still using email.Header which was renamed to email.header back in Python 2.5. References: https://hg.python.org/cpython/file/2.4/Lib/email and https://hg.python.org/cpython/file/2.5/Lib/email
Fri, 07 Oct 2016 08:32:40 -0400 revset: build _syminitletters from a saner source: the string module
Augie Fackler <augie@google.com> [Fri, 07 Oct 2016 08:32:40 -0400] rev 30071
revset: build _syminitletters from a saner source: the string module For now, these sets will be unicode characters in Python 3, which is probably wrong, but it un-blocks importing the module so we can get further along. In the future we'll have to come up with a reasonable encoding strategy for revsets in Python 3. This patch was originally pair-programmed with Martijn.
Thu, 11 Aug 2016 15:05:17 +0200 mq: release lock after transaction in qrefresh
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 11 Aug 2016 15:05:17 +0200] rev 30070
mq: release lock after transaction in qrefresh The transaction should be closed within the lock.
Thu, 11 Aug 2016 14:51:19 +0200 perf: release lock after transaction in perffncachewrite
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 11 Aug 2016 14:51:19 +0200] rev 30069
perf: release lock after transaction in perffncachewrite The transaction should be closed within the lock.
Tue, 23 Aug 2016 23:47:59 +0200 pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 23 Aug 2016 23:47:59 +0200] rev 30068
pull: grab wlock during pull because pull might move bookmarks and bookmark are protected by wlock, we have to grab wlock for pull :-( This required a small upgrade of the 'lockdelay' extension used by 'test-clone.t' because the delay must apply to a single lock only.
Wed, 24 Aug 2016 04:19:11 +0200 bisect: move 'printresult' in the 'hbisect' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 24 Aug 2016 04:19:11 +0200] rev 30067
bisect: move 'printresult' in the 'hbisect' module The logic is already extracted into a closure. We move it into the module dedicated to bisect. A minor change is applied: the creation of the 'displayer' is kept in the main command function, it remove the needs to import 'cmdutil' in 'hbisect'. This would create an import circle otherwise.
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip