Wed, 30 Jan 2019 03:50:31 +0530 montone: fix addition to list by using .append() instead of '+'
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 30 Jan 2019 03:50:31 +0530] rev 41517
montone: fix addition to list by using .append() instead of '+' Differential Revision: https://phab.mercurial-scm.org/D5739
Wed, 30 Jan 2019 17:04:26 -0500 tests: give up and make setsockopt() calls optional in the output
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 17:04:26 -0500] rev 41516
tests: give up and make setsockopt() calls optional in the output I can't figure out what causes these calls to happen or not, and I weary of dealing with them. End the madness for now by marking them all as optional lines of output. Differential Revision: https://phab.mercurial-scm.org/D5762
Thu, 31 Jan 2019 11:12:59 -0500 py3: fix test-remotefilelog-repack.t
Augie Fackler <augie@google.com> [Thu, 31 Jan 2019 11:12:59 -0500] rev 41515
py3: fix test-remotefilelog-repack.t This is uglier, but more obviously correct in my opinion. I guess Python 3 doesn't hang on to the exception as long, which seems reasonable. Differential Revision: https://phab.mercurial-scm.org/D5781
Wed, 30 Jan 2019 19:43:43 -0500 tests: alter email `From` line to a value that's consistently parsed
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 19:43:43 -0500] rev 41514
tests: alter email `From` line to a value that's consistently parsed Python2: >>> email.header.decode_header('=?UTF-8?q?Rapha=C3=ABl=20Hertzog?= <hertzog@debian.org>') [('Rapha\xc3\xabl Hertzog', 'utf-8'), ('<hertzog@debian.org>', None)] Python3: >>> email.header.decode_header('=?UTF-8?q?Rapha=C3=ABl=20Hertzog?= <hertzog@debian.org>') [(b'Rapha\xc3\xabl Hertzog', 'utf-8'), (b' <hertzog@debian.org>', None)] So alter the input to an input that parses to the same result consistently. After skimming the relevant RFC (1342), I'm not sure if what we had was valid, or how I could modify it to be more consistent. Differential Revision: https://phab.mercurial-scm.org/D5769
Thu, 31 Jan 2019 16:51:52 -0800 diff: drop duplicate filter of copies by destination
Martin von Zweigbergk <martinvonz@google.com> [Thu, 31 Jan 2019 16:51:52 -0800] rev 41513
diff: drop duplicate filter of copies by destination I'm pretty sure we don't need to filter copies by destination, at least since the previous patch. Differential Revision: https://phab.mercurial-scm.org/D5790
Thu, 31 Jan 2019 16:32:54 -0800 diff: use match.intersectmatchers()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 31 Jan 2019 16:32:54 -0800] rev 41512
diff: use match.intersectmatchers() Differential Revision: https://phab.mercurial-scm.org/D5789
Fri, 01 Feb 2019 09:13:39 -0800 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Feb 2019 09:13:39 -0800] rev 41511
tests: convert ParseError arguments to str on Python 3 Arguments internally are bytes. Printing the exception on Python 3 will include b'' prefixes. This test file uses a .out file, which doesn't support conditional output. The easiest way to get this to pass on Python 3 is to normalize the exception before printing so there are no b'' prefixes. Differential Revision: https://phab.mercurial-scm.org/D5793
Thu, 31 Jan 2019 22:01:09 -0500 tests: quote $PYTHON for py3 support on Windows
Matt Harbison <matt_harbison@yahoo.com> [Thu, 31 Jan 2019 22:01:09 -0500] rev 41510
tests: quote $PYTHON for py3 support on Windows
Thu, 31 Jan 2019 21:54:38 -0500 py3: byteify the --retest path of run-tests.py
Matt Harbison <matt_harbison@yahoo.com> [Thu, 31 Jan 2019 21:54:38 -0500] rev 41509
py3: byteify the --retest path of run-tests.py
Wed, 30 Jan 2019 19:18:20 -0500 subrepo: clean up lingering bytes/str issues in svn support
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 19:18:20 -0500] rev 41508
subrepo: clean up lingering bytes/str issues in svn support Path encoding is a little suspect in here, but it's not worse than it was when we were on Python 2 only. Subversion subrepo tests now pass in Python 3. Differential Revision: https://phab.mercurial-scm.org/D5774
Wed, 30 Jan 2019 16:14:39 -0800 tweakdefaults: set ui.relative-paths instead of command.status.relative
Martin von Zweigbergk <martinvonz@google.com> [Wed, 30 Jan 2019 16:14:39 -0800] rev 41507
tweakdefaults: set ui.relative-paths instead of command.status.relative Differential Revision: https://phab.mercurial-scm.org/D5775
Tue, 29 Jan 2019 15:37:35 -0800 status: introduce higher-level ui.relative-paths
Martin von Zweigbergk <martinvonz@google.com> [Tue, 29 Jan 2019 15:37:35 -0800] rev 41506
status: introduce higher-level ui.relative-paths The existing commands.status.relative trumps the new config. We need to keep the existing config around for compatibility. However, I don't think we need to introduce similar command-specific options for other commands when they learn to respec ui.relative-paths. Differential Revision: https://phab.mercurial-scm.org/D5746
Tue, 29 Jan 2019 15:37:14 -0800 status: extract helper for producing relative or absolute path for UI
Martin von Zweigbergk <martinvonz@google.com> [Tue, 29 Jan 2019 15:37:14 -0800] rev 41505
status: extract helper for producing relative or absolute path for UI I put the helper in scmutil so it can be used by most modules. I would have put it in utils.pathutil, but I think that's supposed to be unaware of repos. Differential Revision: https://phab.mercurial-scm.org/D5745
Thu, 31 Jan 2019 18:17:02 +0530 tags: avoid generating commit for an already deleted tag (issue5752)
Navaneeth Suresh <navaneeths1998@gmail.com> [Thu, 31 Jan 2019 18:17:02 +0530] rev 41504
tags: avoid generating commit for an already deleted tag (issue5752) `$ hg tag --remove <tagname>` will keep on generating commits regardless of checking whether the tag is deleted or not. I added a a fix for `global` tags by aborting if `nullid` is already mapped to the tag that is to be deleted. Differential Revision: https://phab.mercurial-scm.org/D5780
Fri, 21 Dec 2018 17:10:07 +0100 watchman: detect nested mercurial repositories and abort
Boris Feld <boris.feld@octobus.net> [Fri, 21 Dec 2018 17:10:07 +0100] rev 41503
watchman: detect nested mercurial repositories and abort Disable fsmonitor on nested mercurial repositories. Only depth one repositories are detected at the moment. Differential Revision: https://phab.mercurial-scm.org/D5587
Fri, 21 Dec 2018 17:12:31 +0100 watchman: add verbose config knob
Boris Feld <boris.feld@octobus.net> [Fri, 21 Dec 2018 17:12:31 +0100] rev 41502
watchman: add verbose config knob This new config knob allows to silent watchman log and warning messages when watchman is unavailable. Differential Revision: https://phab.mercurial-scm.org/D5586
Tue, 29 Jan 2019 22:59:15 -0800 extdiff: add --per-file and --confirm options
Ludovic Chabant <ludovic@chabant.com> [Tue, 29 Jan 2019 22:59:15 -0800] rev 41501
extdiff: add --per-file and --confirm options The new options lets the user control how the external program is run. By default, Mercurial passes the 2 snapshot directories as usual, but it can also run the program repeatedly on each file's snapshot pair, and optionally prompt the user each time.
Wed, 30 Jan 2019 19:20:31 -0500 run-tests: sort the skip, failure and error lists in the final output
Matt Harbison <matt_harbison@yahoo.com> [Wed, 30 Jan 2019 19:20:31 -0500] rev 41500
run-tests: sort the skip, failure and error lists in the final output This will help keep the lists consistent, for comparison across runs.
Wed, 30 Jan 2019 17:07:58 -0800 tests: add Python 3 output for test-remotefilelog-gc.t
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 17:07:58 -0800] rev 41499
tests: add Python 3 output for test-remotefilelog-gc.t Python 3 raises a slightly different error on invalid paths. Differential Revision: https://phab.mercurial-scm.org/D5773
Wed, 30 Jan 2019 17:22:07 -0800 hg: raise Abort on invalid path
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 17:22:07 -0800] rev 41498
hg: raise Abort on invalid path Currently, some os.path functions when opening repositories may raise an uncaught TypeError or ValueError if the path is invalid. Let's catch these exceptions and turn them into an Abort for convenience. Differential Revision: https://phab.mercurial-scm.org/D5772
Wed, 30 Jan 2019 19:29:32 -0500 subrepo: bytes/str cleanups on Git support
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 19:29:32 -0500] rev 41497
subrepo: bytes/str cleanups on Git support Git subrepo tests now pass on Python 3. Differential Revision: https://phab.mercurial-scm.org/D5768
Wed, 30 Jan 2019 16:54:34 -0800 tests: compare against a bytes in test-lock.py
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 16:54:34 -0800] rev 41496
tests: compare against a bytes in test-lock.py skip-blame: just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D5771
Wed, 30 Jan 2019 16:53:12 -0800 tests: perform a shallow copy instead of a deep copy
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 16:53:12 -0800] rev 41495
tests: perform a shallow copy instead of a deep copy Python 3 can't perform a deep copy because it looks like symbols in the locals() namespace are not deep-copyable. For the curious, somehow the deepcopy() is attempting to copy objects attached to the unittest.* functions for the running test! We don't use deepcopy() anywhere in the code base and a shallow object copy should be sufficient to test lock copying. Actually, I'm not sure why we even test this, as I couldn't find copy.copy() being used for lock copying either. Who knows. Differential Revision: https://phab.mercurial-scm.org/D5770
Wed, 30 Jan 2019 18:49:17 -0500 tests: make and use a new `svnurlof.py` helper for constructing svn urls
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 18:49:17 -0500] rev 41494
tests: make and use a new `svnurlof.py` helper for constructing svn urls The previous trick of a Python oneliner and some subshells is too hard to make portable, and this lets us consolidate some Windows-specific logic down to a single place. Differential Revision: https://phab.mercurial-scm.org/D5766
Wed, 30 Jan 2019 17:24:57 -0500 server: skip logging of ECONNRESET
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 17:24:57 -0500] rev 41493
server: skip logging of ECONNRESET I believe this was exposed by 5492dc20, because the sending of the 500 would have already failed and prevented this logging. On Python 3, this will be a ConnectionResetError, which is a subtype of OSError, which is why we check for both OSError and socket.error. Bonus: this fixes a race in test-hgweb.t where sometimes the ECONNRESET wouldn't happen, because now we just don't log those errors. Differential Revision: https://phab.mercurial-scm.org/D5764
Wed, 30 Jan 2019 18:32:11 -0500 git: a little pycompat.bytestring() love to make this code work in py3
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 18:32:11 -0500] rev 41492
git: a little pycompat.bytestring() love to make this code work in py3 Differential Revision: https://phab.mercurial-scm.org/D5765
Thu, 24 Jan 2019 16:07:32 -0500 py3: have test-revset2.t write test scripts in a more portable way
Augie Fackler <augie@google.com> [Thu, 24 Jan 2019 16:07:32 -0500] rev 41491
py3: have test-revset2.t write test scripts in a more portable way Fixes the test on Python 3. Differential Revision: https://phab.mercurial-scm.org/D5763
Wed, 30 Jan 2019 16:43:52 -0500 py3: fix up test-remotefilelog-cacheprocess.t to not depend on a repr
Augie Fackler <augie@google.com> [Wed, 30 Jan 2019 16:43:52 -0500] rev 41490
py3: fix up test-remotefilelog-cacheprocess.t to not depend on a repr It looks like the repr() of Exceptions is different from Python 2 to Python 3.7 (but not 3.5?), but the str() is still stable. Sigh. Differential Revision: https://phab.mercurial-scm.org/D5761
Wed, 30 Jan 2019 13:36:51 -0800 remotefilelog: cast division result to an int
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:36:51 -0800] rev 41489
remotefilelog: cast division result to an int Otherwise mid is a float and this confuses __slice__ on Python 3. Differential Revision: https://phab.mercurial-scm.org/D5760
Wed, 30 Jan 2019 13:34:47 -0800 tests: cast division result to int
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:34:47 -0800] rev 41488
tests: cast division result to int Otherwise it is a float on Python 3 and code later compares about casting a float to an int. Differential Revision: https://phab.mercurial-scm.org/D5759
Wed, 30 Jan 2019 13:30:01 -0800 tests: various Python 3 ports for test-remotefilelog-datapack.py
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:30:01 -0800] rev 41487
tests: various Python 3 ports for test-remotefilelog-datapack.py Use bytes I/O. Use byteschr(). Convert temporary path to bytes. Differential Revision: https://phab.mercurial-scm.org/D5758
Wed, 30 Jan 2019 13:22:42 -0800 tests: use items() in test-remotefilelog-datapack.py
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:22:42 -0800] rev 41486
tests: use items() in test-remotefilelog-datapack.py Performance doesn't matter in tests. iteritems() doesn't exist in Python 3. Differential Revision: https://phab.mercurial-scm.org/D5757
Wed, 30 Jan 2019 13:21:43 -0800 tests: use bytes and %d formatting in test-remotefilelog-datapack.py
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:21:43 -0800] rev 41485
tests: use bytes and %d formatting in test-remotefilelog-datapack.py There were numerous failures on Python 3 due to str/bytes mismatch and '%s' not working for ints. Differential Revision: https://phab.mercurial-scm.org/D5756
Mon, 28 Jan 2019 03:41:33 -0500 perf: add a --[no-]clear-caches option to `perfnodemap`
Boris Feld <boris.feld@octobus.net> [Mon, 28 Jan 2019 03:41:33 -0500] rev 41484
perf: add a --[no-]clear-caches option to `perfnodemap` The option is useful to look at pure lookup performance on a warm data structure.
Fri, 25 Jan 2019 18:55:45 -0500 perf: add a perfnodemap command
Boris Feld <boris.feld@octobus.net> [Fri, 25 Jan 2019 18:55:45 -0500] rev 41483
perf: add a perfnodemap command The command focus on timing of the nodemap object itself.
Wed, 30 Jan 2019 13:07:20 -0800 wireprotov1server: use binascii.unhexlify
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:07:20 -0800] rev 41482
wireprotov1server: use binascii.unhexlify The "hex" codec doesn't exist in Python 3. We could use `codecs.decode(h, 'hex_codec')`. But `binascii.unhexlify()` exists and should work the same on Python 2 and 3. Differential Revision: https://phab.mercurial-scm.org/D5755
Wed, 30 Jan 2019 12:55:44 -0800 tests: conditionalize test-http-bad-server.t for Python 3.5
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 12:55:44 -0800] rev 41481
tests: conditionalize test-http-bad-server.t for Python 3.5 It appears that Python 3 introduced output buffering in the HTTP response stack. And Python 3.6 switched from sock.makefile().write() to sock.sendall(). So, we need to conditionalize test-http-bad-server.t to account for the difference in behavior between Python 3.5 and 3.6. Differential Revision: https://phab.mercurial-scm.org/D5754
Wed, 30 Jan 2019 12:12:25 -0800 tests: log sendall() operations and port test-http-bad-server.t
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 12:12:25 -0800] rev 41480
tests: log sendall() operations and port test-http-bad-server.t Python 3's HTTP server layer buffers output and uses sendall() instead of write(). In order to make test-http-bad-server.t pass on Python 3, we needed to teach our socket proxy to log sendall() events and to abort future sends if we reached our send limit. The tests using `tail` were difficult to port with inline output conditionals since the number of lines varied. So we now use `#if py3` for these tests. test-http-bad-server.t now passes on Python 3.6 and 3.7 on at least Linux. However, it does not yet pass on Python 3.5 because of low-level differences to how the HTTP server is implemented. Differential Revision: https://phab.mercurial-scm.org/D5753
Tue, 29 Jan 2019 14:06:46 -0800 tests: glob away readline(-1)
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 29 Jan 2019 14:06:46 -0800] rev 41479
tests: glob away readline(-1) Most of these are readline(65537) on Python 3. I don't think it is worth the readability hit to use (re), as it would require escaping parenthesis. Differential Revision: https://phab.mercurial-scm.org/D5752
Wed, 30 Jan 2019 13:08:59 -0800 tests: change how sockets are closed
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 13:08:59 -0800] rev 41478
tests: change how sockets are closed Python 3 uses a different type to represent a socket file object than Python 2. We need to conditionalize how the socket is closed accordingly. While we're here, we switch to use socket.shutdown() to close the socket. This is because socket.close() may not actually close the socket until it is GCd. socket.shutdown() forces an immediate shutdown. I suspect Python 3 changed semantic behavior here, as I can't get test-http-bad-server.t to work with socket.close(). socket.shutdown() does appear to work, however. Differential Revision: https://phab.mercurial-scm.org/D5751
Wed, 30 Jan 2019 09:52:16 -0800 tests: add b'' prefixes to badserverext.py
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 09:52:16 -0800] rev 41477
tests: add b'' prefixes to badserverext.py This avoids a handful of failures due to missing str and bytes. # skip-blame: just a bunch of b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D5750
Wed, 30 Jan 2019 11:44:34 -0800 hgweb: log error before attempting I/O
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 30 Jan 2019 11:44:34 -0800] rev 41476
hgweb: log error before attempting I/O Previously, an uncaught exception during HTTP request serving would attempt to send an error response then log the exception. If an exception occurred during I/O, this exception would be raised and the original exception wouldn't be logged. This commit changes behavior so the original exception is logged first, before we attempt to do anything else. This ensures the exception is logged. This change resulted in new tracebacks appearing in various tests. Because tracebacks can vary between Python versions, we added a simple script to filter the stack part of traceback lines. This makes testing much simpler, as we don't need to glob over lines and make lines conditional. Differential Revision: https://phab.mercurial-scm.org/D5749
Tue, 29 Jan 2019 11:51:19 -0800 tests: write commit message using file I/O
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 29 Jan 2019 11:51:19 -0800] rev 41475
tests: write commit message using file I/O Python 2.7 will print() \x94\x5c\x0a whereas Python 3 will print() \xc2\x94\x5c\x0a. Why, I'm not sure. It probably has to do with print() being Unicode aware on Python 3 and Python attempting some kind of encoding before emitting the output. This difference results in a different bytes making it to the commit message and the JSON output varying. We work around this by writing bytes to a commit message file. Differential Revision: https://phab.mercurial-scm.org/D5741
Mon, 28 Jan 2019 18:00:14 -0800 patch: handle 0 context lines (diff.unified=0) when parsing patches
Kyle Lippincott <spectral@google.com> [Mon, 28 Jan 2019 18:00:14 -0800] rev 41474
patch: handle 0 context lines (diff.unified=0) when parsing patches Previously, if there were no context lines, we would just keep updating the ranges and the hunk, but not actually storing the hunk (just overwriting it each time). Thus a diff like this: $ hg diff --config diff.unified=0 diff --git a/bar b/bar --- a/bar +++ b/bar @@ -1,0 +2,1 @@ 1 +change1 @@ -3,0 +5,1 @@ 3 +change2 would come out of the parser like this (change1 is lost): bar: @@ -3,0 +5,1 @@ 3 +change2 This had some really weird side effects for things like commit --interactive, split, etc. Differential Revision: https://phab.mercurial-scm.org/D5743
Wed, 30 Jan 2019 03:56:35 +0530 py3: pass str into RuntimeError() to prevent b'' in output
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 30 Jan 2019 03:56:35 +0530] rev 41473
py3: pass str into RuntimeError() to prevent b'' in output # skip-blame as just r'' prefixes Differential Revision: https://phab.mercurial-scm.org/D5740
Wed, 30 Jan 2019 03:49:56 +0530 py3: use '%d' instead of '%s' for integers
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 30 Jan 2019 03:49:56 +0530] rev 41472
py3: use '%d' instead of '%s' for integers Differential Revision: https://phab.mercurial-scm.org/D5738
Tue, 29 Jan 2019 13:26:18 -0500 tests: port test-hgweb-auth.py to Python 3
Augie Fackler <augie@google.com> [Tue, 29 Jan 2019 13:26:18 -0500] rev 41471
tests: port test-hgweb-auth.py to Python 3 Differential Revision: https://phab.mercurial-scm.org/D5736
Tue, 29 Jan 2019 13:25:21 -0500 url: convert some variables back to bytes
Augie Fackler <augie@google.com> [Tue, 29 Jan 2019 13:25:21 -0500] rev 41470
url: convert some variables back to bytes Differential Revision: https://phab.mercurial-scm.org/D5735
Tue, 29 Jan 2019 13:24:20 -0500 url: add some defensive asserts on expected incoming types
Augie Fackler <augie@google.com> [Tue, 29 Jan 2019 13:24:20 -0500] rev 41469
url: add some defensive asserts on expected incoming types Our type handling is a nightmare here, and we're loading passwords to do network IO, so we can afford to be potentially-slow but pedantic here. Differential Revision: https://phab.mercurial-scm.org/D5734
Tue, 29 Jan 2019 16:03:52 +0300 changegroup: don't try to build changelog chunks if not required
Pulkit Goyal <pulkit@yandex-team.ru> [Tue, 29 Jan 2019 16:03:52 +0300] rev 41468
changegroup: don't try to build changelog chunks if not required When we extend a narrow clone without ellipsis, we don't download changelog information because that's already present with the client. However we still try to build that chunk stream. Building that chunk stream involves calling a lookup function and store.emitrevisions() API. The lookup function is called len(cl) number of times. On large repositories, where len(cl) is in millions, calling that lookup function is not a good idea. Also it's not required to use the store.emitrevisons() API because we already have nodes present which we can use. This patch short-circuits state building logic if we are processing a non-ellipsis case and changelog is not required. This saves up ~20 seconds on our internal repo for a single extend call. Differential Revision: https://phab.mercurial-scm.org/D5733
Tue, 29 Jan 2019 15:43:02 +0300 changegroup: initialize the state variable a bit earlier
Pulkit Goyal <pulkit@yandex-team.ru> [Tue, 29 Jan 2019 15:43:02 +0300] rev 41467
changegroup: initialize the state variable a bit earlier This will make the next patch much easier. Differential Revision: https://phab.mercurial-scm.org/D5732
Sat, 26 Jan 2019 11:23:31 -0800 tests: conditionalize test output on Python 3.7
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 11:23:31 -0800] rev 41466
tests: conditionalize test output on Python 3.7 Python 3.7 changed behavior of urllib.parse.quote() from RFC 2396 to RFC 3986 and ~ is now in the set of reserved characters and isn't escaped. We conditioanlize test output accordingly. Differential Revision: https://phab.mercurial-scm.org/D5717
Sat, 13 Oct 2018 16:53:43 +0200 hghave: add pyXY features for Python version numbers
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 13 Oct 2018 16:53:43 +0200] rev 41465
hghave: add pyXY features for Python version numbers This will allow us to sniff for Python >= versions in tests. Differential Revision: https://phab.mercurial-scm.org/D5088
Tue, 29 Jan 2019 14:30:10 +0300 py3: whitelist couple more passing tests found by buildbot
Pulkit Goyal <pulkit@yandex-team.ru> [Tue, 29 Jan 2019 14:30:10 +0300] rev 41464
py3: whitelist couple more passing tests found by buildbot Differential Revision: https://phab.mercurial-scm.org/D5731
Sat, 26 Jan 2019 13:52:39 -0800 keepalive: implement _close_conn() so closes are known
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:52:39 -0800] rev 41463
keepalive: implement _close_conn() so closes are known Keepalives were not working on Python 3 because http.client.HTTPResponse was refactored to call _close_conn() instead of close(). Our custom close() is what returns inactive connections to the available state. We better support Python 3 by implementing a _close_conn(). Differential Revision: https://phab.mercurial-scm.org/D5720
Mon, 28 Jan 2019 21:35:06 -0500 lfs: explicitly add the Content-Length header when uploading blobs, for py3
Matt Harbison <matt_harbison@yahoo.com> [Mon, 28 Jan 2019 21:35:06 -0500] rev 41462
lfs: explicitly add the Content-Length header when uploading blobs, for py3 This was the reason for test-lfs-test-server.t#git-server complaining about an "invalid byte in chunk length". For some reason if this isn't explicitly added, py3.7.1 is adding `transfer-encoding: chunked` as well as `Content-length: x`. Wireshark flagged this as malformed. However, if this is set, it doesn't bother with `transfer-encoding`. Before this patch with py3: PUT /objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1 Accept-Encoding: identity Content-length: 12 accept: application/vnd.git-lfs content-type: application/octet-stream host: localhost:20062 transfer-encoding: chunked user-agent: git-lfs/2.3.4 (Mercurial 4.9rc0+149-7eb7637e34bf) Before this patch with py27: PUT /objects/31cf46fbc4ecd458a0943c5b4881f1f5a6dd36c53d6167d5b69ac45149b38e5b HTTP/1.1 Accept-Encoding: identity accept: application/vnd.git-lfs content-type: application/octet-stream content-length: 12 host: localhost:20062 user-agent: git-lfs/2.3.4 (Mercurial 4.9rc0+149-7eb7637e34bf+20190128) With this patch and py3, the content is the same as the py27 example. RFC2616 says to ignore `Content-Length` if `Transfer-Encoding` is present, so maybe there's nothing to do in the hg-server side (though I'm not sure which it is using if presented both). Maybe chunked encoding is better to do? If someone knows how to suppress the `Content-Length`, we can try that instead.
Mon, 28 Jan 2019 03:20:31 -0500 perf: support looking up multiple revisions
Boris Feld <boris.feld@octobus.net> [Mon, 28 Jan 2019 03:20:31 -0500] rev 41461
perf: support looking up multiple revisions The nodemap code has optimisations around the number of lookup we actually made. As a result, being able to specify multiple revisions to look up is important when measuring performances. One can now specify full revspecs with the --rev arguments.
Fri, 25 Jan 2019 18:43:48 -0500 perf: add a no-lookup variant to perfindex
Boris Feld <boris.feld@octobus.net> [Fri, 25 Jan 2019 18:43:48 -0500] rev 41460
perf: add a no-lookup variant to perfindex It is useful to check how long it takes to create a index object without doing anything with it. We add a new flag dedicated to that.
Mon, 28 Jan 2019 04:47:40 -0500 perf: add some documentation to perfindex
Boris Feld <boris.feld@octobus.net> [Mon, 28 Jan 2019 04:47:40 -0500] rev 41459
perf: add some documentation to perfindex It seems useful to document how the arguments can affect the benchmark.
Fri, 25 Jan 2019 14:53:19 -0500 perf: move cache clearing in the `setup` step of `perfheads`
Boris Feld <boris.feld@octobus.net> [Fri, 25 Jan 2019 14:53:19 -0500] rev 41458
perf: move cache clearing in the `setup` step of `perfheads` The cache clearing is pretty fast, but this seems more "correct".
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip