Sun, 24 Jun 2018 01:13:09 -0400 windows: add a method to convert Unix style command lines to Windows style
Matt Harbison <matt_harbison@yahoo.com> [Sun, 24 Jun 2018 01:13:09 -0400] rev 38483
windows: add a method to convert Unix style command lines to Windows style This started as a copy/paste of `os.path.expandvars()`, but limited to a given dictionary of variables, converting `foo = foo + bar` to `foo += bar`, and adding 'b' string prefixes. Then code was added to make sure that a value being substituted in wouldn't itself be expanded by cmd.exe. But that left inconsistent results between `$var1` and `%var1%` when its value was '%foo%'- since neither were touched, `$var1` wouldn't expand but `%var1%` would. So instead, this just converts the Unix style to Windows style (if the variable exists, because Windows will leave `%missing%` as-is), and lets cmd.exe do its thing. I then dropped the %% -> % conversion (because Windows doesn't do this), and added the ability to escape the '$' with '\'. The escape character is dropped, for consistency with shell handling. After everything seemed stable and working, running the whole test suite flagged a problem near the end of test-bookmarks.t:1069. The problem is cmd.exe won't pass empty variables to its child, so defined but empty variables are now skipped. I can't think of anything better, and it seems like a pre-existing violation of the documentation, which calls out that HG_OLDNODE is empty on bookmark creation. Future additions could potentially be replacing strong quotes with double quotes (cmd.exe doesn't know what to do with the former), escaping a double quote, and some tilde expansion via os.path.expanduser(). I've got some doubts about replacing the strong quotes in case sh.exe is run, but it seems like the right thing to do the vast majority of the time. The original form of this was discussed about a year ago[1]. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/100735.html
Thu, 28 Jun 2018 10:50:53 +0800 hgweb: add archive entries to graph page
Anton Shestakov <av6@dwimlabs.net> [Thu, 28 Jun 2018 10:50:53 +0800] rev 38482
hgweb: add archive entries to graph page Changelog page has them, so it makes sense to add them to graph page too.
Thu, 28 Jun 2018 07:41:08 +0800 hgweb: add z-index for search field tooltip
Anton Shestakov <av6@dwimlabs.net> [Thu, 28 Jun 2018 07:41:08 +0800] rev 38481
hgweb: add z-index for search field tooltip On graph page, search field tooltip sometimes goes down to the graph area, where it used to be covered by foreground element of graph entries (.fg) because they have z-index: 10. To prevent the tooltip from being covered, z-index: 15 is enough.
Wed, 27 Jun 2018 07:19:30 -0700 tests: pass "rev" argument to commands.update() as string
Martin von Zweigbergk <martinvonz@google.com> [Wed, 27 Jun 2018 07:19:30 -0700] rev 38480
tests: pass "rev" argument to commands.update() as string commands.update() normally gets its "rev" argument as a string, but test-basic.t was passing an integer. That happened to work, but we shouldn't rely on it. Differential Revision: https://phab.mercurial-scm.org/D3851
Wed, 27 Jun 2018 23:39:41 +0900 revset: fix heads() order to always follow the input set (BC)
Yuya Nishihara <yuya@tcha.org> [Wed, 27 Jun 2018 23:39:41 +0900] rev 38479
revset: fix heads() order to always follow the input set (BC) An argument expression should never affect the order of the result set. That's the rule of the revset predicates.
Wed, 27 Jun 2018 23:33:57 +0900 test-revset: show that order of heads() can be wrong
Yuya Nishihara <yuya@tcha.org> [Wed, 27 Jun 2018 23:33:57 +0900] rev 38478
test-revset: show that order of heads() can be wrong
Wed, 27 Jun 2018 10:21:07 -0400 stringutil: update list of re-special characters to include &~
Augie Fackler <augie@google.com> [Wed, 27 Jun 2018 10:21:07 -0400] rev 38477
stringutil: update list of re-special characters to include &~ I missed this because I was looking at the change that refactored re.escape, and these characters were added in https://github.com/python/cpython/commit/05cb728d68a278d11466f9a6c8258d914135c96c. Differential Revision: https://phab.mercurial-scm.org/D3850
Tue, 26 Jun 2018 11:38:58 -0400 tests: fix up some lax escaping in test-template-basic.t
Augie Fackler <augie@google.com> [Tue, 26 Jun 2018 11:38:58 -0400] rev 38476
tests: fix up some lax escaping in test-template-basic.t These misfired escapes turn into hard errors in Python 3.7, and I'd really rather we not work around it. We should *probably* try and find a way to proactively warn users about invalid escape sequences. There's one more failure of this type in this file on Python 3.7, but I can't figure out the issue. It'll need to be corrected in a follow-up. Differential Revision: https://phab.mercurial-scm.org/D3843
Tue, 26 Jun 2018 10:36:23 -0400 cleanup: migrate from re.escape to stringutil.reescape
Augie Fackler <augie@google.com> [Tue, 26 Jun 2018 10:36:23 -0400] rev 38475
cleanup: migrate from re.escape to stringutil.reescape This has consistent behavior on Python 2.7, 3.6, and 3.7 and has the benefit of probably being a little faster. Test output changes are largely because / used to be pointlessly escaped. Differential Revision: https://phab.mercurial-scm.org/D3842
Tue, 26 Jun 2018 10:33:52 -0400 stringutil: add a new function to do minimal regex escaping
Augie Fackler <augie@google.com> [Tue, 26 Jun 2018 10:33:52 -0400] rev 38474
stringutil: add a new function to do minimal regex escaping Per https://bugs.python.org/issue29995, re.escape() used to over-escape regular expression strings, but in Python 3.7 that's been fixed, which also improved the performance of re.escape(). Since it's both an output change for us *and* a perfomance win, let's just effectively backport the new behavior to hg on all Python versions. Differential Revision: https://phab.mercurial-scm.org/D3841
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip