Wed, 21 Feb 2018 23:02:39 +0900 showconfig: use set to filter sections and entry names
Yuya Nishihara <yuya@tcha.org> [Wed, 21 Feb 2018 23:02:39 +0900] rev 36446
showconfig: use set to filter sections and entry names Before, an entry matching the specified section could be printed twice if the selector wasn't unique. "sections" and "items" are renamed because it's hard to distinguish "sections" from the loop variable "section".
Wed, 21 Feb 2018 22:20:27 +0900 util: factor out shellsplit() function
Yuya Nishihara <yuya@tcha.org> [Wed, 21 Feb 2018 22:20:27 +0900] rev 36445
util: factor out shellsplit() function It turned out to be more than the simple posix=True|False flag, so let's introduce a platform function. I also made it py3 ready.
Fri, 23 Feb 2018 23:09:58 +0900 diff: do not split function name if character encoding is unknown
Yuya Nishihara <yuya@tcha.org> [Fri, 23 Feb 2018 23:09:58 +0900] rev 36444
diff: do not split function name if character encoding is unknown Only ASCII characters can be split reliably at any byte positions, so let's just leave long multi-byte sequence long. It's probably less bad than putting an invalid byte sequence into a diff. This doesn't try to split the first ASCII slice from multi-byte sequence because a combining character may follow.
Sun, 25 Feb 2018 11:20:35 +0900 histedit: use repo.revs() instead of repo.set() where revisions are needed
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 11:20:35 +0900] rev 36443
histedit: use repo.revs() instead of repo.set() where revisions are needed Follows up 72da480db4a5. This is just a micro optimization, but looks slightly nicer.
Sun, 25 Feb 2018 11:13:01 +0900 acl: replace bare getpass.getuser() by platform function
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 11:13:01 +0900] rev 36442
acl: replace bare getpass.getuser() by platform function Follows up dbadf28d4db0. bytestr() shouldn't be applied here because getuser() isn't guaranteed to be all in ASCII. This change means GetUserNameA() is used on Windows, but that's probably better than trying to get the current user name in UNIX way.
Sat, 24 Feb 2018 11:21:14 -0800 context: remove basectx.__int__ (API)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:21:14 -0800] rev 36441
context: remove basectx.__int__ (API) basectx is the only type in the repo having __int__ implemented. This magic method can result in unexpected coercion. Furthermore, having it implemented is wrong for some contexts, since rev() may return None in some cases. Previous commits removed known cases in core where contexts are coerced to integers. So let's delete basectx.__int__. This commit is a bit dangerous. While the test suite passes, there are likely still some callers in core that rely on __int__ that don't have test coverage. An alternative would be to issue a deprecation warning and let this bake for a few releases. .. api:: context.basectx no longer implements __int__. Context instances will no longer cast to ints. Consumers should call ``ctx.rev()`` instead. Differential Revision: https://phab.mercurial-scm.org/D2433
Sat, 24 Feb 2018 11:17:10 -0800 patchbomb: resolve revs before evaluating %ld revset
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:17:10 -0800] rev 36440
patchbomb: resolve revs before evaluating %ld revset Weaning off of basectx.__rev__. Differential Revision: https://phab.mercurial-scm.org/D2432
Sat, 24 Feb 2018 11:04:21 -0800 histedit: resolve revs before evaluating %ld revset
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:04:21 -0800] rev 36439
histedit: resolve revs before evaluating %ld revset We want to stop relying on basectx.__int__. That means we can't use the %ld revset operator with an iterable of contexts. So we expand an iterable of contexts into a list of revs before calling into the revset. Perhaps it would be worthwhile to add a revset format operator that recognizes context instances so we can just pass contexts as revset arguments? Differential Revision: https://phab.mercurial-scm.org/D2431
Sat, 24 Feb 2018 11:20:24 -0800 split: use ctx.rev() instead of %d % ctx
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:20:24 -0800] rev 36438
split: use ctx.rev() instead of %d % ctx And rename a variable for clarity while we're here. This is part of our effort to wean off basectx.__int__. Differential Revision: https://phab.mercurial-scm.org/D2430
Sat, 24 Feb 2018 11:14:28 -0800 commands: use ctx.rev() instead of %d % ctx
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:14:28 -0800] rev 36437
commands: use ctx.rev() instead of %d % ctx Weaning off basectx.__int__. Differential Revision: https://phab.mercurial-scm.org/D2429
Sat, 24 Feb 2018 11:13:36 -0800 cmdutil: use ctx.rev() instead of %d % ctx
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:13:36 -0800] rev 36436
cmdutil: use ctx.rev() instead of %d % ctx Weaning off basectx.__int__. Differential Revision: https://phab.mercurial-scm.org/D2428
Sat, 24 Feb 2018 11:07:07 -0800 rebase: use ctx.rev() instead of %d % ctx
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:07:07 -0800] rev 36435
rebase: use ctx.rev() instead of %d % ctx Weaning away from basectx.__int__. Differential Revision: https://phab.mercurial-scm.org/D2427
Sat, 24 Feb 2018 10:53:47 -0800 histedit: use ctx.rev() instead of %d % ctx
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:53:47 -0800] rev 36434
histedit: use ctx.rev() instead of %d % ctx Weaning off basectx.__int__. Differential Revision: https://phab.mercurial-scm.org/D2426
Sat, 24 Feb 2018 10:56:15 -0800 histedit: rename variables so they have "ctx" in them
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:56:15 -0800] rev 36433
histedit: rename variables so they have "ctx" in them It is convention for context instances to end with "ctx." Until we have type annotations, this makes auditing much, much easier. Differential Revision: https://phab.mercurial-scm.org/D2425
Sat, 24 Feb 2018 10:51:13 -0800 cmdutil: use ctx.rev() instead of int(ctx)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:51:13 -0800] rev 36432
cmdutil: use ctx.rev() instead of int(ctx) Continuing to wean off basectx.__int__. Differential Revision: https://phab.mercurial-scm.org/D2424
Sat, 24 Feb 2018 10:48:24 -0800 templatekw: use ctx.rev() instead of casting context to int
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:48:24 -0800] rev 36431
templatekw: use ctx.rev() instead of casting context to int basectx has __int__ implemented. Per mailing list discussion with Yuya, we don't like having this implemented because it is too much magic and in some cases rev() will return None, which isn't an int. So convert a `'%d' % ctx` to ctx.rev() instead. Differential Revision: https://phab.mercurial-scm.org/D2423
Sat, 24 Feb 2018 16:18:40 +0530 py3: fix handling of keyword arguments at more places
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:18:40 +0530] rev 36430
py3: fix handling of keyword arguments at more places The keys of keyword arguments of Python 3 should be str, which is why we need to prevent getting the b'' prefix added by the transformer or convert keys to str using pycompat.strkwargs() Differential Revision: https://phab.mercurial-scm.org/D2420
Sat, 24 Feb 2018 16:16:14 +0530 py3: use '%d' for integers instead of '%s'
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:16:14 +0530] rev 36429
py3: use '%d' for integers instead of '%s' Differential Revision: https://phab.mercurial-scm.org/D2419
Sat, 24 Feb 2018 17:49:10 -0600 merge with stable
Kevin Bullock <kbullock+mercurial@ringworld.org> [Sat, 24 Feb 2018 17:49:10 -0600] rev 36428
merge with stable
Sat, 24 Feb 2018 16:20:55 +0530 py3: use '//' for integer division in hgweb/common.py
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:20:55 +0530] rev 36427
py3: use '//' for integer division in hgweb/common.py '/' on Python 3 does the float division. Differential Revision: https://phab.mercurial-scm.org/D2422
Sat, 24 Feb 2018 16:20:15 +0530 py3: use util.forcebytestr to convert error messages to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:20:15 +0530] rev 36426
py3: use util.forcebytestr to convert error messages to bytes Differential Revision: https://phab.mercurial-scm.org/D2421
Sat, 24 Feb 2018 16:15:16 +0530 py3: add b'' prefixes to config options in test/badserverext.py
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:15:16 +0530] rev 36425
py3: add b'' prefixes to config options in test/badserverext.py Differential Revision: https://phab.mercurial-scm.org/D2418
Sat, 24 Feb 2018 16:07:45 +0530 py3: replace file() with open()
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:07:45 +0530] rev 36424
py3: replace file() with open() file() is not present in Python 3. Differential Revision: https://phab.mercurial-scm.org/D2417
Sat, 24 Feb 2018 16:06:21 +0530 py3: make sure regexes are bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:06:21 +0530] rev 36423
py3: make sure regexes are bytes # skip-blame because we added just b'' prefix Differential Revision: https://phab.mercurial-scm.org/D2416
Sat, 24 Feb 2018 16:04:57 +0530 py3: convert dict.items() to list explicitly
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:04:57 +0530] rev 36422
py3: convert dict.items() to list explicitly On python 3, dict.items() returns a dict_items object which cannot be sorted. Differential Revision: https://phab.mercurial-scm.org/D2415
Sat, 24 Feb 2018 15:35:00 +0530 py3: whitelist another 8 passing tests
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 15:35:00 +0530] rev 36421
py3: whitelist another 8 passing tests Differential Revision: https://phab.mercurial-scm.org/D2414
Sat, 24 Feb 2018 01:22:15 +0530 py3: use '//' for integer divisions
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 01:22:15 +0530] rev 36420
py3: use '//' for integer divisions Differential Revision: https://phab.mercurial-scm.org/D2413
Sat, 24 Feb 2018 01:21:22 +0530 py3: use "%d" for integers instead of "%s"
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 01:21:22 +0530] rev 36419
py3: use "%d" for integers instead of "%s" util.parsedate() returns a tuple of integers. Writing this patch, I wish we had some type hinting. Differential Revision: https://phab.mercurial-scm.org/D2412
Sat, 24 Feb 2018 01:20:20 +0530 py3: use util.forcebytestr instead of str to convert error messages
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 01:20:20 +0530] rev 36418
py3: use util.forcebytestr instead of str to convert error messages Differential Revision: https://phab.mercurial-scm.org/D2411
Sat, 24 Feb 2018 01:19:26 +0530 py3: use pycompat.byteskwargs() to fix keyword arguments handling
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 01:19:26 +0530] rev 36417
py3: use pycompat.byteskwargs() to fix keyword arguments handling I missed these when I fixed keyword arguments handling in the whole file. Differential Revision: https://phab.mercurial-scm.org/D2410
Fri, 23 Feb 2018 20:50:10 -0500 tests: add HTTP POST and PUT support to the $LOGDATE$ substitution
Matt Harbison <matt_harbison@yahoo.com> [Fri, 23 Feb 2018 20:50:10 -0500] rev 36416
tests: add HTTP POST and PUT support to the $LOGDATE$ substitution The lfs serving code uses both POST and PUT requests (and there's existing support for POST).
Fri, 23 Feb 2018 18:47:26 +0530 py3: make regex bytes in hgweb/webcommands.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 18:47:26 +0530] rev 36415
py3: make regex bytes in hgweb/webcommands.py # skip-blame because just b'' prefix
Fri, 23 Feb 2018 18:23:51 +0530 py3: replace types.NoneType with type(None)
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 18:23:51 +0530] rev 36414
py3: replace types.NoneType with type(None) types.NoneType is not present in Python 3.
Fri, 23 Feb 2018 18:12:20 +0530 py3: add missing b'' in test-arbitraryfilectx.t
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 18:12:20 +0530] rev 36413
py3: add missing b'' in test-arbitraryfilectx.t # skip-blame as just b'' prefix
Fri, 23 Feb 2018 18:04:33 +0530 py3: pass ctx.rev() instead of ctx in range()
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 18:04:33 +0530] rev 36412
py3: pass ctx.rev() instead of ctx in range()
Fri, 23 Feb 2018 18:03:58 +0530 py3: add b'' prefixes in test-alias.t
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 18:03:58 +0530] rev 36411
py3: add b'' prefixes in test-alias.t # skip-blame as it's just b'' prefixes
Fri, 23 Feb 2018 17:26:45 +0530 py3: add b'' prefixes in test-revset.t
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 17:26:45 +0530] rev 36410
py3: add b'' prefixes in test-revset.t # skip-blame because it's just b''
Fri, 23 Feb 2018 17:25:51 +0530 py3: make sure we use bytes in generate-working-copy-states.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 17:25:51 +0530] rev 36409
py3: make sure we use bytes in generate-working-copy-states.py
Fri, 23 Feb 2018 17:15:36 +0530 py3: fix keyword arguments handling in hgext/acl.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 17:15:36 +0530] rev 36408
py3: fix keyword arguments handling in hgext/acl.py # skip-blame because we added r'' prefixes
Fri, 23 Feb 2018 17:14:25 +0530 py3: use pycompat.bytestr to convert str returned by getpass.getuser to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 17:14:25 +0530] rev 36407
py3: use pycompat.bytestr to convert str returned by getpass.getuser to bytes
Fri, 23 Feb 2018 16:57:17 +0530 py3: add b'' prefixes in test-abort-checkin.t
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 23 Feb 2018 16:57:17 +0530] rev 36406
py3: add b'' prefixes in test-abort-checkin.t # skip-blame because we just added a b'' prefix.
Wed, 21 Feb 2018 23:43:23 +0530 py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Feb 2018 23:43:23 +0530] rev 36405
py3: add b'' prefixes in test-dispatch.py # skip-blame because this is just adding b'' prefixes
Thu, 22 Feb 2018 20:04:42 -0500 cleanup: say goodbye to manifestv2 format
Augie Fackler <augie@google.com> [Thu, 22 Feb 2018 20:04:42 -0500] rev 36404
cleanup: say goodbye to manifestv2 format This experiment was a bust: we'd hoped for smaller repository sizes, but things got larger. Google ended up rolling out tree manifests in a format that's compatible with the original manifest format, and I believe Facebook is doing the same. This code was never implemented as native speedups, so I'm pretty comfortable saying nobody is using the experimental feature. Let's rip it out. I noticed this code still kicking around because I was investigating a repo corruption issue for timeless. .. bc:: Support for the experimental manifestv2 format has been removed, as it was never completed and failed to meet expectations. Differential Revision: https://phab.mercurial-scm.org/D2393
Wed, 21 Feb 2018 16:47:39 -0800 wireproto: document the wonky push protocol for SSH
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 16:47:39 -0800] rev 36403
wireproto: document the wonky push protocol for SSH It took me several minutes to figure out how the "unbundle" protocol worked. It turns out that the SSH protocol handler sends an empty reply that is interpreted as "OK to send" and only then does the client send the bundle payload. On top of that, the response is different depending on whether the operation was successful or not. I nearly pulled out my hair deciphering this. Differential Revision: https://phab.mercurial-scm.org/D2385
Wed, 21 Feb 2018 14:21:05 -0800 wireprototypes: move baseprotocolhandler from wireprotoserver
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 14:21:05 -0800] rev 36402
wireprototypes: move baseprotocolhandler from wireprotoserver This is needed to prevent a cycle in an upcoming commit. Differential Revision: https://phab.mercurial-scm.org/D2384
Wed, 21 Feb 2018 14:02:23 -0800 sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 14:02:23 -0800] rev 36401
sshpeer: defer pipe buffering and stderr sidechannel binding The doublepipe and bufferedinputpipe types facilitate polling multiple pipes without blocking and for automatically forwarding output from the SSH server's stderr pipe to the ui as "remote: " output. This all happens automatically and callers don't need to worry about reading from multiple pipes. An upcoming change to version 2 of the SSH wire protocol will eliminate the use of stderr and move side-channel output into the "main" pipe. The SSH wire protocol will use a pair of unidirectional pipes - just like the HTTP protocol. In this future world, the doublepipe primitive isn't necessary because the stderr pipe won't be used. To prepare for eventually not using doublepipe, we delay the construction of this primitive from immediately after connection establishment to inside construction of the peer instance. The handshake occurs between these two events. So we had to teach the handshake code to read from stderr so any stderr output from the server is still attended to early in the connection lifetime. Differential Revision: https://phab.mercurial-scm.org/D2383
Wed, 21 Feb 2018 13:08:55 -0800 sshpeer: make pipe polling code more explicit
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 13:08:55 -0800] rev 36400
sshpeer: make pipe polling code more explicit "hasbuffer" is a property on our special bufferedinputpipe class. When reading this code, I thought it might have had something special to do properties on built-in types. But "hasbuffer" doesn't appear in the CPython code base for either 2.7 or 3.7, so the answer is no. Let's make the code more explicit about the fact that it deals with our special bufferedinputpipe type. Differential Revision: https://phab.mercurial-scm.org/D2382
Mon, 19 Feb 2018 13:20:17 -0800 tests: store protocol payload in files
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 19 Feb 2018 13:20:17 -0800] rev 36399
tests: store protocol payload in files Upcoming changes to version 2 of the SSH protocol will introduce binary components to the protocol. It will be easier to eliminate trailing newlines and use binary in the tests if the protocol payload is being generated by Python. So use inline Python to write payloads to files and pipe those files to server processes instead of shell strings/variables. Differential Revision: https://phab.mercurial-scm.org/D2381
Wed, 21 Feb 2018 08:35:48 -0800 sshpeer: return framed file object when needed
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 08:35:48 -0800] rev 36398
sshpeer: return framed file object when needed Currently, wireproto.wirepeer has a default implementation of _submitbatch() and sshv1peer has a very similar implementation. The main difference is that sshv1peer is aware of the total amount of bytes it can read whereas the default implementation reads the stream until no more data is returned. The default implementation works for HTTP, since there is a known end to HTTP responses (either Content-Length or 0 sized chunk). This commit teaches sshv1peer to use our just-introduced "cappedreader" class for wrapping a file object to limit the number of bytes that can be read. We do this by introducing an argument to specify whether the response is framed. If set, we returned a cappedreader instance instead of the raw pipe. _call() always has framed responses. So we set this argument unconditionally and then .read() the entirety of the result. Strictly speaking, we don't need to use cappedreader in this case and can inline frame decoding/read logic. But I like when things are consistent. The overhead should be negligible. _callstream() and _callcompressable() are special: whether framing is used depends on the specific command. So, we define a set of commands that have framed response. It currently only contains "batch." As a result of this change, the one-off implementation of _submitbatch() in sshv1peer can be removed since it is now safe to .read() the response's file object until end of stream. cappedreader takes care of not overrunning the frame. Differential Revision: https://phab.mercurial-scm.org/D2380
Wed, 21 Feb 2018 08:33:50 -0800 sshpeer: move logic for sending a request into a new function
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 08:33:50 -0800] rev 36397
sshpeer: move logic for sending a request into a new function The **args being used to pass arbitrary command arguments is limiting because it makes it harder to control behavior of the function. We factor most of _callstream() into a new function that doesn't use **args. Differential Revision: https://phab.mercurial-scm.org/D2379
Mon, 19 Feb 2018 15:57:28 -0800 sshpeer: rename _recv and _send to _readframed and _writeframed
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 19 Feb 2018 15:57:28 -0800] rev 36396
sshpeer: rename _recv and _send to _readframed and _writeframed Because it is reading and writing a chunk of data with a well-defined size. "recv" and "send" make it sound like things are a direct proxy to the underlying pipe, which they aren't. Differential Revision: https://phab.mercurial-scm.org/D2378
Wed, 21 Feb 2018 13:41:20 -0800 util: add a file object proxy that can read at most N bytes
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 21 Feb 2018 13:41:20 -0800] rev 36395
util: add a file object proxy that can read at most N bytes Sometimes we have data of a known size within a stream. For performance reasons, we don't want to pre-read this data (we want to allow consumers to read on demand). For simplicitly reasons, we don't want callers to necessarily know their data is coming from within an outer stream and there is a limit to how much they should read. The class introduced by this commit provides a very simple proxy around an underlying file object that allows the consumer to .read() up to N bytes from the file object. Attempts to read past this many bytes results in a simulated EOF. Differential Revision: https://phab.mercurial-scm.org/D2377
Mon, 05 Feb 2018 15:03:51 +0100 patches: release the GIL while applying the patch
Boris Feld <boris.feld@octobus.net> [Mon, 05 Feb 2018 15:03:51 +0100] rev 36394
patches: release the GIL while applying the patch This will allow multiple threads to apply patches at the same time.
Wed, 21 Feb 2018 11:43:12 +0100 perfbranchmap: allow to select the filter to benchmark
Boris Feld <boris.feld@octobus.net> [Wed, 21 Feb 2018 11:43:12 +0100] rev 36393
perfbranchmap: allow to select the filter to benchmark Running the branchmap computation on all filter levels can be expensive. Narrowing the run to some specific filters can speed up benchmarking time when working only on a subset of filter levels.
Wed, 21 Feb 2018 12:13:16 +0100 perfbranchmap: display 'unfiltered' for unfiltered performance
Boris Feld <boris.feld@octobus.net> [Wed, 21 Feb 2018 12:13:16 +0100] rev 36392
perfbranchmap: display 'unfiltered' for unfiltered performance This is slightly clearer than "None" and will help with coming changes to select the filter level we want timing for.
Thu, 22 Feb 2018 01:00:57 -0500 py3: two more narrow tests passing
Augie Fackler <augie@google.com> [Thu, 22 Feb 2018 01:00:57 -0500] rev 36391
py3: two more narrow tests passing Differential Revision: https://phab.mercurial-scm.org/D2390
Thu, 22 Feb 2018 00:51:32 -0500 narrowbundle2: more kwargs native string fixes
Augie Fackler <augie@google.com> [Thu, 22 Feb 2018 00:51:32 -0500] rev 36390
narrowbundle2: more kwargs native string fixes This gets test-narrow.t to *almost* pass. Something appears to be borked in producing bundles, but only some of the time? I'm lost, but this change is at least a clear improvement. # skip-blame just more r prefixes on strings Differential Revision: https://phab.mercurial-scm.org/D2389
Wed, 21 Feb 2018 23:24:51 -0500 py3: whitelist another 11 passing tests
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 23:24:51 -0500] rev 36389
py3: whitelist another 11 passing tests This is most of narrow. There's still some buglets at the margins, but it's pretty good progress for not a lot of work. Differential Revision: https://phab.mercurial-scm.org/D2388
Wed, 21 Feb 2018 22:49:40 -0500 narrowbundle2: use native string to get kwargs from dict
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 22:49:40 -0500] rev 36388
narrowbundle2: use native string to get kwargs from dict # skip-blame just some r prefixes on strings Differential Revision: https://phab.mercurial-scm.org/D2387
Wed, 21 Feb 2018 22:49:15 -0500 narrowbundle2: drop legacy getcgkwargs variable
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 22:49:15 -0500] rev 36387
narrowbundle2: drop legacy getcgkwargs variable I think this was around as part of support for some older hg internals. It's not needed any more. Differential Revision: https://phab.mercurial-scm.org/D2386
Wed, 21 Feb 2018 20:05:29 -0800 fancyopts: add support for custom multi-arg opts in fancyopts.py
Daniel Ploch <dploch@google.com> [Wed, 21 Feb 2018 20:05:29 -0800] rev 36386
fancyopts: add support for custom multi-arg opts in fancyopts.py This allows for more complex multi-arg opt logic, such as "--sum 1 --sum 2" -> 3, "--csv alice,bob --csv charlie" -> ["alice","bob","charlie"]. The current support for callables is insufficient for this. This is done by introducing a 'customopt' class which can be extended for more powerful opts logic. All existing opt-types are converted to use this class, simplifying the fancyopts() logic. Differential Revision: https://phab.mercurial-scm.org/D2090
Wed, 21 Feb 2018 11:57:11 -0500 narrowcommands: add some missing strkwargs calls for py3
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 11:57:11 -0500] rev 36385
narrowcommands: add some missing strkwargs calls for py3 # skip-blame because it's just r prefixes Differential Revision: https://phab.mercurial-scm.org/D2367
Wed, 21 Feb 2018 11:56:51 -0500 narrowwirepeer: add some strkwargs to fix a crash on py3
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 11:56:51 -0500] rev 36384
narrowwirepeer: add some strkwargs to fix a crash on py3 # skip-blame because it's just some r prefixes Differential Revision: https://phab.mercurial-scm.org/D2366
Wed, 21 Feb 2018 12:03:44 -0500 narrowchangegroup: remove backwards compatibility with old hg
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 12:03:44 -0500] rev 36383
narrowchangegroup: remove backwards compatibility with old hg This was missed in the initial import of narrowhg, but was detected by the Python 3 porting effort once I got enough other things in narrow fixed. Differential Revision: https://phab.mercurial-scm.org/D2370
Wed, 21 Feb 2018 19:11:11 -0800 narrowbundle2: replace map() with equivalent list comprehension
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 19:11:11 -0800] rev 36382
narrowbundle2: replace map() with equivalent list comprehension The result of this gets used as a list in core code, so the generator returned by map() on Python 3 is a problem. Differential Revision: https://phab.mercurial-scm.org/D2369
Wed, 21 Feb 2018 11:58:41 -0500 narrowbundle2: this dict contains native strings, look kws up as such
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 11:58:41 -0500] rev 36381
narrowbundle2: this dict contains native strings, look kws up as such We could also do a byteskwargs dance, but that seems silly given that we only need this one element. Differential Revision: https://phab.mercurial-scm.org/D2368
Wed, 21 Feb 2018 11:56:22 -0500 tests: port extension in test-narrow-expanddirstate.t to Python 3
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 11:56:22 -0500] rev 36380
tests: port extension in test-narrow-expanddirstate.t to Python 3 Differential Revision: https://phab.mercurial-scm.org/D2365
Wed, 21 Feb 2018 10:10:02 -0500 py3: use list comprehensions instead of filter where we need to eagerly filter
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 10:10:02 -0500] rev 36379
py3: use list comprehensions instead of filter where we need to eagerly filter These two uses of filter() are then checked for truthiness, but on Python 3: >>> bool(filter(None, [])) True So we need to stop depending on that. Fortunately it's easy to replace the filter with an equivalent list comprehension. Differential Revision: https://phab.mercurial-scm.org/D2364
Wed, 21 Feb 2018 10:08:35 -0500 narrow: use list comprehension instead of filter for filtering lists
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 10:08:35 -0500] rev 36378
narrow: use list comprehension instead of filter for filtering lists filter() returns a generator on Python 3, which causes these filters to break things. Differential Revision: https://phab.mercurial-scm.org/D2363
Wed, 21 Feb 2018 09:43:35 -0500 py3: whitelist another eight passing tests
Augie Fackler <augie@google.com> [Wed, 21 Feb 2018 09:43:35 -0500] rev 36377
py3: whitelist another eight passing tests Differential Revision: https://phab.mercurial-scm.org/D2362
Tue, 06 Feb 2018 08:57:22 -0800 mq: don't reimplement any()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Feb 2018 08:57:22 -0800] rev 36376
mq: don't reimplement any() Differential Revision: https://phab.mercurial-scm.org/D2376
Tue, 06 Feb 2018 08:55:54 -0800 mq: don't reimplement any()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Feb 2018 08:55:54 -0800] rev 36375
mq: don't reimplement any() Differential Revision: https://phab.mercurial-scm.org/D2375
Tue, 06 Feb 2018 08:54:36 -0800 strip: don't reimplement any()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Feb 2018 08:54:36 -0800] rev 36374
strip: don't reimplement any() Differential Revision: https://phab.mercurial-scm.org/D2374
Tue, 06 Feb 2018 08:52:12 -0800 convert: don't reimplement any()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Feb 2018 08:52:12 -0800] rev 36373
convert: don't reimplement any() Differential Revision: https://phab.mercurial-scm.org/D2373
Tue, 06 Feb 2018 08:49:37 -0800 verify: don't reimplement any()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Feb 2018 08:49:37 -0800] rev 36372
verify: don't reimplement any() Differential Revision: https://phab.mercurial-scm.org/D2372
Tue, 06 Feb 2018 08:48:05 -0800 walkrepos: don't reimplement any()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Feb 2018 08:48:05 -0800] rev 36371
walkrepos: don't reimplement any() Differential Revision: https://phab.mercurial-scm.org/D2371
Wed, 21 Feb 2018 00:25:16 +0530 py3: make sure we open file in bytes mode
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Feb 2018 00:25:16 +0530] rev 36370
py3: make sure we open file in bytes mode Differential Revision: https://phab.mercurial-scm.org/D2360
Wed, 21 Feb 2018 00:24:44 +0530 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Feb 2018 00:24:44 +0530] rev 36369
py3: add b'' to test-ui-color.py # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D2359
Tue, 20 Feb 2018 22:03:13 -0500 debuginstall: strip double quotes from editorbin on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 20 Feb 2018 22:03:13 -0500] rev 36368
debuginstall: strip double quotes from editorbin on Windows The unconditional posix style shlex.split() prior to 94a1ff16f362 handled this. This isn't mutually exclusive with stripping the quotes in util.findexe()- if the editor can't be found, this command prints out the string, inside single quotes.
Tue, 20 Feb 2018 21:37:30 -0500 pycompat: correct the shlex.split() proxy method signature in py3
Matt Harbison <matt_harbison@yahoo.com> [Tue, 20 Feb 2018 21:37:30 -0500] rev 36367
pycompat: correct the shlex.split() proxy method signature in py3
Tue, 20 Feb 2018 22:23:06 -0500 merge with stable
Augie Fackler <augie@google.com> [Tue, 20 Feb 2018 22:23:06 -0500] rev 36366
merge with stable
Mon, 19 Feb 2018 23:47:53 +0530 convert: don't use type as a variable name
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 23:47:53 +0530] rev 36365
convert: don't use type as a variable name Differential Revision: https://phab.mercurial-scm.org/D2358
Mon, 19 Feb 2018 23:47:15 +0530 convert: don't use bytes as a variable name
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 23:47:15 +0530] rev 36364
convert: don't use bytes as a variable name Differential Revision: https://phab.mercurial-scm.org/D2357
Mon, 19 Feb 2018 23:46:42 +0530 py3: add a r'' prefix to prevent transformer from adding b''
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 23:46:42 +0530] rev 36363
py3: add a r'' prefix to prevent transformer from adding b'' # skip-blame as only r'' prefix was added Differential Revision: https://phab.mercurial-scm.org/D2356
Mon, 19 Feb 2018 23:44:41 +0530 py3: use pycompat.byteskwargs in hgext/convert/
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 23:44:41 +0530] rev 36362
py3: use pycompat.byteskwargs in hgext/convert/ Differential Revision: https://phab.mercurial-scm.org/D2355
Mon, 19 Feb 2018 21:45:49 +0530 py3: add b'' prefixes in test-mdiff.py
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 21:45:49 +0530] rev 36361
py3: add b'' prefixes in test-mdiff.py # skip-blame because we are just adding b'' Differential Revision: https://phab.mercurial-scm.org/D2354
Mon, 19 Feb 2018 21:18:52 +0530 py3: use dict.items() instead of dict.iteritems() in tests
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 21:18:52 +0530] rev 36360
py3: use dict.items() instead of dict.iteritems() in tests dict.iteritems() is not present in Python 3. Differential Revision: https://phab.mercurial-scm.org/D2353
Mon, 19 Feb 2018 15:28:54 +0530 py3: add b'' prefixes in test-transplant.t
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 15:28:54 +0530] rev 36359
py3: add b'' prefixes in test-transplant.t # skip-blame because we are just adding b'' Differential Revision: https://phab.mercurial-scm.org/D2352
Mon, 19 Feb 2018 15:28:16 +0530 py3: add b'' prefixes in fakepatchtime.py
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 15:28:16 +0530] rev 36358
py3: add b'' prefixes in fakepatchtime.py # skip-blame because we are just adding b'' Differential Revision: https://phab.mercurial-scm.org/D2351
Mon, 19 Feb 2018 15:27:25 +0530 py3: add b'' prefixes in fakedirstatewritetime.py
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 15:27:25 +0530] rev 36357
py3: add b'' prefixes in fakedirstatewritetime.py # skip-blame because we are just adding b'' Differential Revision: https://phab.mercurial-scm.org/D2350
Mon, 19 Feb 2018 15:26:07 +0530 py3: use '%d' to convert integer to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 19 Feb 2018 15:26:07 +0530] rev 36356
py3: use '%d' to convert integer to bytes Differential Revision: https://phab.mercurial-scm.org/D2349
Mon, 19 Feb 2018 12:48:50 +0800 hgweb: show each obsfateentry on its own line
Anton Shestakov <av6@dwimlabs.net> [Mon, 19 Feb 2018 12:48:50 +0800] rev 36355
hgweb: show each obsfateentry on its own line Commits with more than one reason for being obsolete used to just show obsfate entries all on one line, and that doesn't look good. Let's show each entry on its own line. In paper and coal the lines are simply split using a <br> element, and in other hgweb themes each entry has its own table header. This is done by analogy with changeset parents and children -- in paper and coal they are all put into one table row, and everywhere else each one gets a separate row.
Mon, 19 Feb 2018 12:30:23 +0800 tests: check obsolete changeset with two obsfate entries
Anton Shestakov <av6@dwimlabs.net> [Mon, 19 Feb 2018 12:30:23 +0800] rev 36354
tests: check obsolete changeset with two obsfate entries It's more interesting to see how a changeset that was both rewritten and split looks in hgweb.
Sun, 18 Feb 2018 15:53:48 -0500 py3: whitelist another six passing tests
Augie Fackler <augie@google.com> [Sun, 18 Feb 2018 15:53:48 -0500] rev 36353
py3: whitelist another six passing tests Differential Revision: https://phab.mercurial-scm.org/D2348
Sun, 18 Feb 2018 15:38:29 -0500 lock: delay is numeric, use %d for formatting
Augie Fackler <augie@google.com> [Sun, 18 Feb 2018 15:38:29 -0500] rev 36352
lock: delay is numeric, use %d for formatting Differential Revision: https://phab.mercurial-scm.org/D2347
Sun, 18 Feb 2018 15:23:26 -0500 debugbuilddag: use '%d' instead of str() to get numbered lines
Augie Fackler <augie@google.com> [Sun, 18 Feb 2018 15:23:26 -0500] rev 36351
debugbuilddag: use '%d' instead of str() to get numbered lines Differential Revision: https://phab.mercurial-scm.org/D2346
(0) -30000 -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 tip