Tue, 03 Apr 2018 23:33:54 +0900 hgweb: use template context to render {files} of changelist entries
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:33:54 +0900] rev 37997
hgweb: use template context to render {files} of changelist entries This is a preferred way to process nested templates.
Tue, 03 Apr 2018 23:32:16 +0900 hgweb: wrap {files} of changelist entries with mappedgenerator
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:32:16 +0900] rev 37996
hgweb: wrap {files} of changelist entries with mappedgenerator This also switches the associated templates conditionally, which can't be a mappinggenerator.
Tue, 03 Apr 2018 23:31:11 +0900 hgweb: use template context to render {files} of changesetentry()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:31:11 +0900] rev 37995
hgweb: use template context to render {files} of changesetentry() This is a preferred way to process nested templates.
Tue, 03 Apr 2018 23:29:11 +0900 hgweb: wrap {files} of changesetentry() with mappedgenerator
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:29:11 +0900] rev 37994
hgweb: wrap {files} of changesetentry() with mappedgenerator This can't be easily adapted to mappinggenerator because the associated templates are switched per item.
Tue, 03 Apr 2018 23:25:32 +0900 hgweb: extract generator of {files} from changesetentry()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:25:32 +0900] rev 37993
hgweb: extract generator of {files} from changesetentry() This will be wrapped with mappedgenerator.
Sat, 16 Jan 2016 19:23:53 +0900 templatefilters: document the json filter
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jan 2016 19:23:53 +0900] rev 37992
templatefilters: document the json filter I don't know the exact reason why it was undocumented, but that would be because unicode is difficult for humans. Since the json filter can now get localstr back to UTF-8 as long as it is unprocessed (i.e. {desc|json} works, but {desc|firstline|json} doesn't), it seems good enough to advertise the json filter.
Sun, 23 Apr 2017 13:15:30 +0900 encoding: introduce tagging type for non-lossy non-ASCII string
Yuya Nishihara <yuya@tcha.org> [Sun, 23 Apr 2017 13:15:30 +0900] rev 37991
encoding: introduce tagging type for non-lossy non-ASCII string This fixes the weird behavior of toutf8b(), which would convert a local string back to UTF-8 *only if* it was lossy in the system encoding. Before b7b26e54e37a "encoding: avoid localstr when a string can be encoded losslessly (issue2763)", all local strings were wrapped by the localstr class. I think this would justify the round-trip behavior of toutf8b(). ASCII strings are special-cased, so the cost of wrapping with safelocalstr is negligible. (with mercurial repo) $ export HGRCPATH=/dev/null HGPLAIN= HGENCODING=latin-1 $ hg log --time --config experimental.evolution=all > /dev/null (original) time: real 11.340 secs (user 11.290+0.000 sys 0.060+0.000) time: real 11.390 secs (user 11.300+0.000 sys 0.080+0.000) time: real 11.430 secs (user 11.360+0.000 sys 0.070+0.000) (this patch) time: real 11.200 secs (user 11.100+0.000 sys 0.100+0.000) time: real 11.370 secs (user 11.300+0.000 sys 0.070+0.000) time: real 11.190 secs (user 11.130+0.000 sys 0.060+0.000)
Sun, 22 Apr 2018 11:38:53 +0900 encoding: fix toutf8b() to resurrect lossy characters even if "\xed" in it
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Apr 2018 11:38:53 +0900] rev 37990
encoding: fix toutf8b() to resurrect lossy characters even if "\xed" in it If 's' is a localstr, 's._utf8' must be returned to get the original UTF-8 sequence back. Because of this, it was totally wrong to test if '"\xed" not in s', which should be either '"\xed" not in s._utf8' or just omitted. This patch moves the localstr handling to top as the validity of 's._utf8' should be pre-checked by encoding.tolocal().
Sun, 25 Mar 2018 16:47:33 +0900 sshserver: redirect stdin/stdout early and use duplicated streams
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Mar 2018 16:47:33 +0900] rev 37989
sshserver: redirect stdin/stdout early and use duplicated streams This is what we achieved with hook.redirect(True) plus ui.fout = ui.ferr. The hook.redirect() function can't be completely removed yet since hgweb still depends on it. I'm not sure if it is necessary for WSGI servers. CGI needs it, but does WSGI communicate over stdin/stdout channels?
Sun, 25 Mar 2018 16:35:24 +0900 sshserver: do setbinary() by caller (API)
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Mar 2018 16:35:24 +0900] rev 37988
sshserver: do setbinary() by caller (API) In most cases, stdio should be set to binary mode by the dispatcher, so the sshserver does not have to take care of that. The only exception was hg-ssh, which is fixed by this patch. .. api:: ``sshserver()`` no longer sets stdin and stdout to binary mode.
Sun, 25 Mar 2018 16:39:17 +0900 test-ssh: add some flush() to make output deterministic
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Mar 2018 16:39:17 +0900] rev 37987
test-ssh: add some flush() to make output deterministic We shouldn't rely on buffering mode/state of file handles.
Thu, 10 May 2018 21:08:32 +0900 stringutil: flip the default of pprint() to bprefix=False
Yuya Nishihara <yuya@tcha.org> [Thu, 10 May 2018 21:08:32 +0900] rev 37986
stringutil: flip the default of pprint() to bprefix=False If we use pprint() as a drop-in replacement for repr(), bprefix=False is more appropriate. Let's make it the default to remove bprefix=False noise.
Thu, 10 May 2018 21:00:58 +0900 stringutil: make pprint() forward uninteresting object to b'%r'
Yuya Nishihara <yuya@tcha.org> [Thu, 10 May 2018 21:00:58 +0900] rev 37985
stringutil: make pprint() forward uninteresting object to b'%r' We appear to start using pprint() as a replacement for repr(), so it's probably safer to support any Python objects instead of complaining about that.
Fri, 27 Apr 2018 13:46:54 -0400 tests: use stringutil.pprint instead of custom dumper in test-hgweb-auth.py
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:46:54 -0400] rev 37984
tests: use stringutil.pprint instead of custom dumper in test-hgweb-auth.py Differential Revision: https://phab.mercurial-scm.org/D3529
Fri, 27 Apr 2018 13:43:59 -0400 tests: port test-simplekeyvaluefile.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:43:59 -0400] rev 37983
tests: port test-simplekeyvaluefile.py to Python 3 # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D3528
Fri, 27 Apr 2018 13:39:45 -0400 tests: port test-extensions-wrapfunction to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:39:45 -0400] rev 37982
tests: port test-extensions-wrapfunction to Python 3 Differential Revision: https://phab.mercurial-scm.org/D3527
Fri, 27 Apr 2018 13:15:51 -0400 tests: port test-ui-config to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:15:51 -0400] rev 37981
tests: port test-ui-config to Python 3 Slight test output changes to make life easier. Differential Revision: https://phab.mercurial-scm.org/D3526
Fri, 27 Apr 2018 13:37:10 -0400 config: fix py3 backslash escaping bug in parser caught by tests
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:37:10 -0400] rev 37980
config: fix py3 backslash escaping bug in parser caught by tests Differential Revision: https://phab.mercurial-scm.org/D3525
Fri, 27 Apr 2018 13:27:18 -0400 tests: port test-symlink-os-yes-fs-no.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:27:18 -0400] rev 37979
tests: port test-symlink-os-yes-fs-no.py to Python 3 # skip-blame just bytes/str changes Differential Revision: https://phab.mercurial-scm.org/D3524
Fri, 27 Apr 2018 13:26:43 -0400 posix: use inst.errno instead of inst[0] on OSError instances
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:26:43 -0400] rev 37978
posix: use inst.errno instead of inst[0] on OSError instances Differential Revision: https://phab.mercurial-scm.org/D3523
Fri, 27 Apr 2018 13:17:24 -0400 tests: port test-filelog.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:17:24 -0400] rev 37977
tests: port test-filelog.py to Python 3 # skip-blame just some bytes prefixes Differential Revision: https://phab.mercurial-scm.org/D3522
Fri, 27 Apr 2018 13:15:16 -0400 stringutil: teach pprint about tuples
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:15:16 -0400] rev 37976
stringutil: teach pprint about tuples Differential Revision: https://phab.mercurial-scm.org/D3521
Thu, 19 Apr 2018 21:00:12 +0900 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org> [Thu, 19 Apr 2018 21:00:12 +0900] rev 37975
templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Fri, 04 May 2018 21:31:34 -0700 revlog: use literal -1 instead of variable that always has that value
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 May 2018 21:31:34 -0700] rev 37974
revlog: use literal -1 instead of variable that always has that value We were setting "ntrev" to "rev", but "rev" was always -1 at the end of the loop, so it's clearer to use a literal -1. Differential Revision: https://phab.mercurial-scm.org/D3498
Fri, 04 May 2018 22:17:28 -0700 revlog: extract function for fully populating the radix tree
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 May 2018 22:17:28 -0700] rev 37973
revlog: extract function for fully populating the radix tree This code is currently used for partialmatch(), but I want to reuse it when I implement shortest() in native code. Differential Revision: https://phab.mercurial-scm.org/D3497
Fri, 27 Apr 2018 12:07:57 -0400 tests: port test-lfs-pointer.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 12:07:57 -0400] rev 37972
tests: port test-lfs-pointer.py to Python 3 The weird bit here is having to import /something/ from Mercurial before we touch hgext.* so that the module loader gets initialized. That's probably a bug we should explore at some point? Differential Revision: https://phab.mercurial-scm.org/D3514
Fri, 27 Apr 2018 13:09:19 -0400 tests: port test-ui-verbosity.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:09:19 -0400] rev 37971
tests: port test-ui-verbosity.py to Python 3 # skip-blame just some bytes/string wrangling Differential Revision: https://phab.mercurial-scm.org/D3515
Fri, 27 Apr 2018 12:07:32 -0400 lfs: stabilize error message values for Python 2 and 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 12:07:32 -0400] rev 37970
lfs: stabilize error message values for Python 2 and 3 Differential Revision: https://phab.mercurial-scm.org/D3513
Fri, 27 Apr 2018 11:59:21 -0400 tests: port test-ui-color.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:59:21 -0400] rev 37969
tests: port test-ui-color.py to Python 3 As in some other tests, I like confirming that we're dealing with bytes here, so the b prefix is now in the expected output on both 2 and 3. Differential Revision: https://phab.mercurial-scm.org/D3512
Fri, 27 Apr 2018 11:57:15 -0400 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:57:15 -0400] rev 37968
tests: port test-dispatch.py to Python 3 Differential Revision: https://phab.mercurial-scm.org/D3511
Fri, 27 Apr 2018 11:55:04 -0400 tests: port test-wireproto.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:55:04 -0400] rev 37967
tests: port test-wireproto.py to Python 3 A little bit of output churn because we now get b'' prefixes on output in both 2 and 3, but for this test I'm more comfortable knowing that we're using bytestrs everywhere. Differential Revision: https://phab.mercurial-scm.org/D3510
Fri, 27 Apr 2018 11:50:24 -0400 tests: port test-context.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:50:24 -0400] rev 37966
tests: port test-context.py to Python 3 This is a weird "minimally invasive" port. I think there's room to do better here, but I'm also not sure how often we'll touch this code... Differential Revision: https://phab.mercurial-scm.org/D3509
Fri, 27 Apr 2018 11:49:49 -0400 scmutil: fix __repr__ of status tuple
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:49:49 -0400] rev 37965
scmutil: fix __repr__ of status tuple We should probably start giving some thought to migrating the status tuple to attrs, but not now. Differential Revision: https://phab.mercurial-scm.org/D3508
Mon, 07 May 2018 19:43:43 -0700 update: print warning about hidden changeset after update
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 19:43:43 -0700] rev 37964
update: print warning about hidden changeset after update When an attempt to update to a hidden changeset fails because the working copy is dirty, you may get a message like this: updating to a hidden changeset 343f6de32686 (hidden revision '343f6de32686' was rewritten as: 4ab941244072) abort: conflicting changes (commit or update --clean to discard changes) It's easy to miss the real error here. This patch moves the warning about the hidden changeset to after the update has happened. It changes the verb tense accordingly (and drops the "a" that I think it sounds better without). Of course, this means that the commit isn't actually hidden anymore when the message is printed. I think that's fine. Differential Revision: https://phab.mercurial-scm.org/D3479
Fri, 27 Apr 2018 01:35:00 -0400 py3: whitelist three passing cvs convert tests
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:35:00 -0400] rev 37963
py3: whitelist three passing cvs convert tests Differential Revision: https://phab.mercurial-scm.org/D3490
Fri, 27 Apr 2018 01:32:21 -0400 cvsps: convert encoding name to sysstr
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:32:21 -0400] rev 37962
cvsps: convert encoding name to sysstr Differential Revision: https://phab.mercurial-scm.org/D3489
Wed, 09 May 2018 13:46:31 -0700 tweakdefaults: remove "bisect" from commands.status.skipstates
Martin von Zweigbergk <martinvonz@google.com> [Wed, 09 May 2018 13:46:31 -0700] rev 37961
tweakdefaults: remove "bisect" from commands.status.skipstates If you forget to clear bisect state after you're done bisecting (as I've done twice in the last week or so), the next time you run `hg bisect --good/--bad`, it's going to tell you "The first bad revision is:" etc. It's probably not obvious to new users what's going on, and having the verbose output about an ongoing bisection will probably help them, so let's turn it back on by default. Differential Revision: https://phab.mercurial-scm.org/D3516
Tue, 03 Apr 2018 22:58:33 +0900 hgweb: wrap {instabilities} by hybridlist()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 22:58:33 +0900] rev 37960
hgweb: wrap {instabilities} by hybridlist() This is a list of simple values, which can be a hybrid list.
Tue, 03 Apr 2018 22:55:33 +0900 hgweb: wrap {whyunstable} with mappinggenerator
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 22:55:33 +0900] rev 37959
hgweb: wrap {whyunstable} with mappinggenerator This is also a generator of mappings, which needs a wrapper.
Tue, 03 Apr 2018 22:54:36 +0900 hgweb: wrap {succsandmarkers} with mappinggenerator
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 22:54:36 +0900] rev 37958
hgweb: wrap {succsandmarkers} with mappinggenerator This is also a generator of mappings, which needs a wrapper.
Mon, 02 Apr 2018 00:46:33 +0900 hgweb: wrap {branches} and {entries} of branches with mappinggenerator
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:46:33 +0900] rev 37957
hgweb: wrap {branches} and {entries} of branches with mappinggenerator Bare generator of mappings shouldn't be put in a template mapping because its type can't be determined without consuming it.
Mon, 02 Apr 2018 00:41:19 +0900 hgweb: drop tmpl argument from webutil.showtag() and showbookmark()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:41:19 +0900] rev 37956
hgweb: drop tmpl argument from webutil.showtag() and showbookmark() It's replaced by a context argument passed to a mappinggenerator.
Mon, 02 Apr 2018 00:39:26 +0900 hgweb: wrap {changelogtag}, {changesettag}, and {changesetbookmark}
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:39:26 +0900] rev 37955
hgweb: wrap {changelogtag}, {changesettag}, and {changesetbookmark} These can't be hybrid lists as they've associated with named template, 't1'.
Mon, 02 Apr 2018 00:29:31 +0900 hgweb: drop useless **args from webutil.showtag() and showbookmark()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:29:31 +0900] rev 37954
hgweb: drop useless **args from webutil.showtag() and showbookmark() Callers never pass excessive arguments to these functions.
Tue, 08 May 2018 19:00:01 +0800 hgweb: reuse graph node-related functions from templates
Anton Shestakov <av6@dwimlabs.net> [Tue, 08 May 2018 19:00:01 +0800] rev 37953
hgweb: reuse graph node-related functions from templates The difference between templatekw.getgraphnode() and webutil.getgraphnode() is that the latter is not limited to 1 character.
Tue, 08 May 2018 17:54:57 +0800 templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net> [Tue, 08 May 2018 17:54:57 +0800] rev 37952
templates: split getgraphnode() body into two functions getgraphnodecurrent() is checking if the node is currently checked out and getgraphnodesymbol() is checking properties that have more to do with the stored data and the DAG.
Mon, 02 Apr 2018 00:06:39 +0900 hgweb: wrap {branch} and {changesetbranch} by hybridlist()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:06:39 +0900] rev 37951
hgweb: wrap {branch} and {changesetbranch} by hybridlist() This is also a 0/1-length list of a simple value, can be a hybrid list. Appears that we have many {branch} variants.
Mon, 02 Apr 2018 00:05:38 +0900 hgweb: wrap {inbranch} by hybridlist()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:05:38 +0900] rev 37950
hgweb: wrap {inbranch} by hybridlist() This is also a 0/1-length list of a simple value, can be a hybrid list.
Mon, 02 Apr 2018 00:04:53 +0900 hgweb: wrap {branches} by hybridlist()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:04:53 +0900] rev 37949
hgweb: wrap {branches} by hybridlist() This is a 0/1-length list of a simple value, can be a hybrid list.
Mon, 02 Apr 2018 00:03:49 +0900 hgweb: wrap {bookmarks} by hybridlist()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:03:49 +0900] rev 37948
hgweb: wrap {bookmarks} by hybridlist() This is also a list of simple values.
Mon, 02 Apr 2018 00:02:36 +0900 hgweb: wrap {tags} by hybridlist()
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:02:36 +0900] rev 37947
hgweb: wrap {tags} by hybridlist() This one is a list of simple values, which can be a hybrid list.
Mon, 02 Apr 2018 00:00:29 +0900 hgweb: wrap {rename} with mappinglist
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:00:29 +0900] rev 37946
hgweb: wrap {rename} with mappinglist No bare list of mappings should be put in a template mapping.
Fri, 27 Apr 2018 11:23:41 -0400 tests: fix test-status-inprocess.py on Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:23:41 -0400] rev 37945
tests: fix test-status-inprocess.py on Python 3 The same print() hack as test-filecache.py. Differential Revision: https://phab.mercurial-scm.org/D3507
Fri, 27 Apr 2018 11:22:00 -0400 tests: port test-filecache.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:22:00 -0400] rev 37944
tests: port test-filecache.py to Python 3 Only remarkable bit is my wrapper around print(), which I regret a little, but not enough to go back and try to do something cleaner. Differential Revision: https://phab.mercurial-scm.org/D3506
Fri, 27 Apr 2018 11:07:24 -0400 tests: port test-cbor.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:07:24 -0400] rev 37943
tests: port test-cbor.py to Python 3 I suspect this b''.join() was a remnant of an earlier iteration of this code, as it was building a string from a string. Differential Revision: https://phab.mercurial-scm.org/D3505
Fri, 27 Apr 2018 11:06:49 -0400 cborutil: port to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:06:49 -0400] rev 37942
cborutil: port to Python 3 The only problem lurking in here was sorts of mismatched types. The sorts are only for output stability in our tests (sigh), so we just build a phony sort key using the __name__ of types so that we only compare like types against each other. By pure luck, my awful sort key matches the behavior we get "for free" in Python 2, so no test output changes. Differential Revision: https://phab.mercurial-scm.org/D3504
Fri, 27 Apr 2018 10:58:08 -0400 lock: pass sysstr to warnings module
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:58:08 -0400] rev 37941
lock: pass sysstr to warnings module This makes test-lock.py slightly less broken, but it's still pretty far from passing. Differential Revision: https://phab.mercurial-scm.org/D3503
Fri, 27 Apr 2018 10:46:33 -0400 tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:46:33 -0400] rev 37940
tests: port test-revlog-raw.py to Python 3 # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D3496
Fri, 27 Apr 2018 10:40:04 -0400 tests: migrate test-wsgirequest.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:40:04 -0400] rev 37939
tests: migrate test-wsgirequest.py to Python 3 # skip-blame adding and removing b prefixes Differential Revision: https://phab.mercurial-scm.org/D3495
Fri, 27 Apr 2018 10:31:49 -0400 tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:31:49 -0400] rev 37938
tests: port test-parseindex2.py to Python 3 # skip-blame just b prefixes and int() instead of long() Differential Revision: https://phab.mercurial-scm.org/D3494
Fri, 27 Apr 2018 10:30:24 -0400 tests: prefer string concatenation with () instead of \ in parseindex2 tests
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:30:24 -0400] rev 37937
tests: prefer string concatenation with () instead of \ in parseindex2 tests Differential Revision: https://phab.mercurial-scm.org/D3493
Fri, 27 Apr 2018 10:17:48 -0400 tests: port test-simplemerge.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:17:48 -0400] rev 37936
tests: port test-simplemerge.py to Python 3 # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D3492
Fri, 27 Apr 2018 10:21:24 -0400 tests: replace use of assertEquals with assertEqual in test-simplemerge.py
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:21:24 -0400] rev 37935
tests: replace use of assertEquals with assertEqual in test-simplemerge.py The former is deprecated. No functionality change. # skip-blame just removing an ess and some whitespace Differential Revision: https://phab.mercurial-scm.org/D3491
Fri, 27 Apr 2018 01:30:29 -0400 tests: b prefixes on some inline python in test-convert-cvs.t
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:30:29 -0400] rev 37934
tests: b prefixes on some inline python in test-convert-cvs.t # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D3488
Fri, 27 Apr 2018 01:28:56 -0400 cvsps: wrap bytes in bytestr before %r-ing it
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:28:56 -0400] rev 37933
cvsps: wrap bytes in bytestr before %r-ing it Differential Revision: https://phab.mercurial-scm.org/D3487
Fri, 27 Apr 2018 01:27:22 -0400 convcmd: make a copy of heads before mutating it
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:27:22 -0400] rev 37932
convcmd: make a copy of heads before mutating it Differential Revision: https://phab.mercurial-scm.org/D3486
Fri, 27 Apr 2018 01:26:23 -0400 cvsps: portably convert int to bytes
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:26:23 -0400] rev 37931
cvsps: portably convert int to bytes Differential Revision: https://phab.mercurial-scm.org/D3485
Fri, 27 Apr 2018 01:24:04 -0400 cvsps: wrap cmp methods (deprecated) in functools.cmp_to_key
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:24:04 -0400] rev 37930
cvsps: wrap cmp methods (deprecated) in functools.cmp_to_key Differential Revision: https://phab.mercurial-scm.org/D3484
Fri, 27 Apr 2018 01:18:43 -0400 tests: port inline extension in test-convert-cvs.t to py3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:18:43 -0400] rev 37929
tests: port inline extension in test-convert-cvs.t to py3 # skip-blame two b prefixes, nothing more Differential Revision: https://phab.mercurial-scm.org/D3483
Fri, 27 Apr 2018 01:14:23 -0400 cvsps: add b prefixes to regular expressions
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:14:23 -0400] rev 37928
cvsps: add b prefixes to regular expressions # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D3482
Fri, 27 Apr 2018 00:50:08 -0400 minirst: fix bytes slicing defect on Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:50:08 -0400] rev 37927
minirst: fix bytes slicing defect on Python 3 This is the only lingering problem in minirst on Python 3. test-minirst.py now passes on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3478
Fri, 27 Apr 2018 00:46:05 -0400 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:46:05 -0400] rev 37926
tests: port test-minirst.py to Python 3 There are a few failures here, mostly around formatting lists. I'll fix that in a subsequent change. Differential Revision: https://phab.mercurial-scm.org/D3477
Fri, 27 Apr 2018 00:31:57 -0400 tests: use stringutil.pprint instead of pprint.pprint in test-minirst.py
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:31:57 -0400] rev 37925
tests: use stringutil.pprint instead of pprint.pprint in test-minirst.py Stabilizes some output on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3476
Fri, 27 Apr 2018 00:24:45 -0400 tests: port test-pathencode.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:24:45 -0400] rev 37924
tests: port test-pathencode.py to Python 3 # skip-blame uninteresting changes, mainly b prefixes Differential Revision: https://phab.mercurial-scm.org/D3475
Fri, 27 Apr 2018 00:18:46 -0400 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:18:46 -0400] rev 37923
tests: port test-hgwebdir-paths.py to Python 3 # skip-blame just b prefixes, nothing interesting Differential Revision: https://phab.mercurial-scm.org/D3474
Fri, 27 Apr 2018 00:17:17 -0400 tests: port test-walkrepo.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:17:17 -0400] rev 37922
tests: port test-walkrepo.py to Python 3 # skip-blame just b prefixes, nothing interesting Differential Revision: https://phab.mercurial-scm.org/D3473
Fri, 27 Apr 2018 00:14:23 -0400 tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:14:23 -0400] rev 37921
tests: port test-minifileset.py to Python 3 # skip-blame all b prefixes, nothing interesting Differential Revision: https://phab.mercurial-scm.org/D3472
Fri, 27 Apr 2018 00:13:56 -0400 minifileset: fix on Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:13:56 -0400] rev 37920
minifileset: fix on Python 3 Found by porting test-minifileset.py to Python 3. Differential Revision: https://phab.mercurial-scm.org/D3471
Fri, 27 Apr 2018 00:08:48 -0400 tests: port test-url.py to Python 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:08:48 -0400] rev 37919
tests: port test-url.py to Python 3 # skip-blame it's all b prefixes and pycompat.bytestr() wrappers Differential Revision: https://phab.mercurial-scm.org/D3470
Fri, 27 Apr 2018 00:08:21 -0400 tests: fix error case in test-url.py's doctest
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:08:21 -0400] rev 37918
tests: fix error case in test-url.py's doctest This required some careful attention, so I wanted to split it out from the uninteresting bits that'll be in the next change. Differential Revision: https://phab.mercurial-scm.org/D3469
Fri, 27 Apr 2018 00:06:08 -0400 util: make util.url __repr__ consistent on Python 2 and 3
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:06:08 -0400] rev 37917
util: make util.url __repr__ consistent on Python 2 and 3 Differential Revision: https://phab.mercurial-scm.org/D3468
Fri, 27 Apr 2018 00:05:46 -0400 sslutil: fix some edge cases in Python 3 support
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:05:46 -0400] rev 37916
sslutil: fix some edge cases in Python 3 support Detected by fixing up test-url.py on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3467
Thu, 26 Apr 2018 23:33:27 -0400 tests: port test-hybridencode.py to unittest
Augie Fackler <augie@google.com> [Thu, 26 Apr 2018 23:33:27 -0400] rev 37915
tests: port test-hybridencode.py to unittest This was done predominantly through keyboard macros in emacs, so it's not always pretty, but it's enough to make the test easier to work with. There's a ton of room for improvement in this file, but it would be labor intensive and error-prone, so I went with the dumbest option that could work, so as to avoid transcription errors. Paranoia: $ egrep '^ def test' tests/test-hybridencode.py | wc -l 44 $ egrep '^ def test' tests/test-hybridencode.py | sort | uniq | wc -l so I'm pretty confident there aren't any shadowed test methods. This fixes the test on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3466
Thu, 26 Apr 2018 21:39:35 -0400 tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com> [Thu, 26 Apr 2018 21:39:35 -0400] rev 37914
tests: make test-check-interfaces.py work on Python 3 # skip-blame just a bunch of bytes prefixes Differential Revision: https://phab.mercurial-scm.org/D3465
Thu, 26 Apr 2018 21:38:49 -0400 scmutil: clean up bytes/string cache decorator mess on Python 3 again
Augie Fackler <augie@google.com> [Thu, 26 Apr 2018 21:38:49 -0400] rev 37913
scmutil: clean up bytes/string cache decorator mess on Python 3 again The previous fix to this area worked, but was dropping bytes in __dict__ on Python 3. This was causing subtle breakage in test-check-interfaces.py, and probably other things too. Fixed now. Differential Revision: https://phab.mercurial-scm.org/D3464
Mon, 07 May 2018 12:18:09 -0700 directaccess: use resolvehexnodeidprefix() instead of _partialmatch()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 12:18:09 -0700] rev 37912
directaccess: use resolvehexnodeidprefix() instead of _partialmatch() Same reasoning as previous commit: I want to make resolvehexnodeidprefix() move complex and don't want to duplicate that code in directaccess. Differential Revision: https://phab.mercurial-scm.org/D3463
Mon, 07 May 2018 14:32:55 -0700 revset: use resolvehexnodeidprefix() in id() predicate (BC)
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 14:32:55 -0700] rev 37911
revset: use resolvehexnodeidprefix() in id() predicate (BC) We now have a public method for this purpose, so we don't need to access the private revlog._partialmatch(). Also, I'll probably make some changes to resolvehexnodeidprefix() later, and I want those to be reflected by the id() predicate. Note that this breaks a test case, because we now resolve the prefix in the unfiltered repo and get an ambiguous lookup, which results in no revision being added to the revset. The test case was already documented to be broken even though it wasn't. It's important to note that {shortest(node)} already uses the unfiltered repo, so we're not going to break people who get the prefix from there. I think we may not want to ever use shortest() in the filtered repo. It seems unlikely to be enough of a win to matter much. For example, in my hg repo, it would save me only 0.2 hex digits. In another repo that only I modify, it saves a little more, but it's still only 0.29 hex digits. It seems unlikely that people will prune enough commits that only 1/16 of the commits are visible (which is what it would take a to save a single hex digit). Instead, I'm working on another approach: allow ambiguous matches to be disambiguated within a user-specified revset. Whether or not that pans out, I hope we're okay with this little change in behavior for now and we can decide what to do about it later. Differential Revision: https://phab.mercurial-scm.org/D3311
Mon, 07 May 2018 14:32:43 -0700 revset: make id() an empty set for ambiguous nodeid (BC)
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 14:32:43 -0700] rev 37910
revset: make id() an empty set for ambiguous nodeid (BC) As Yuya pointed out in the review of D3311, id() (and rev()) does not raise an error when the input is an unknown identifier, so it doesn't make sense for it to do that when the input is ambiguous with a filtered node. However, it turned out that it already does raise an error when the input is ambiguous among the visible nodes. So let's start by fixing that. Differential Revision: https://phab.mercurial-scm.org/D3462
Sat, 05 May 2018 00:16:43 -0700 shortest: don't keep checking for longer prefix if node doesn't exist (API)
Martin von Zweigbergk <martinvonz@google.com> [Sat, 05 May 2018 00:16:43 -0700] rev 37909
shortest: don't keep checking for longer prefix if node doesn't exist (API) If revlog.shortest() is called with an invalid nodeid, we keep checking if longer and longer prefixes are valid. We call revlog._partialmatch() for each prefix. That function will give us None if the node doesn't exist (and a RevlogError if it's ambiguous), so there's no need to keep checking. This patch instead makes revlog.shortest() raise a LookupError is the node does not exist, and updates the caller to handle it. Before this patch, revlog.shortest() would return the full hexnode for nonexistent nodeids. By the same reasoning as in 7b2955624777 (scmutil: make shortesthexnodeidprefix() take a full binary nodeid, 2018-04-14), it's not revlog.shortest() that should decide how to present nonexistent nodeids, so that's now moved to the template function. This should speed up cases where {shortest()} is applied to an invalid nodeid, but I couldn't think of a reasonable case where that would happen. Differential Revision: https://phab.mercurial-scm.org/D3461
Wed, 02 May 2018 22:56:10 -0700 shortest: extract function for checking if a prefix is a revnum
Martin von Zweigbergk <martinvonz@google.com> [Wed, 02 May 2018 22:56:10 -0700] rev 37908
shortest: extract function for checking if a prefix is a revnum Much of isvalid() was about testing if a prefix is a valid revnum. I want to reuse that soon, so let's move it out. There is no significant slowdown from the function call overhead. Differential Revision: https://phab.mercurial-scm.org/D3460
Thu, 03 May 2018 10:12:47 -0700 shortest: rename "test" variable to "prefix"
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 10:12:47 -0700] rev 37907
shortest: rename "test" variable to "prefix" Sorry if this is considered churn, but "prefix" just seems much clearer to me. Differential Revision: https://phab.mercurial-scm.org/D3459
Wed, 02 May 2018 22:49:06 -0700 shortest: move some safe code out of exception block
Martin von Zweigbergk <martinvonz@google.com> [Wed, 02 May 2018 22:49:06 -0700] rev 37906
shortest: move some safe code out of exception block The RevlogError and WdirUnsupported could be raised by _partialmatch(), but not by the rest of isvalid(), so let's move the rest out to make it clearer. Differential Revision: https://phab.mercurial-scm.org/D3458
Fri, 04 May 2018 22:04:44 -0700 revlog: don't say "not found" on internal error
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 May 2018 22:04:44 -0700] rev 37905
revlog: don't say "not found" on internal error If index_node() returned NULL, then index_find_node() and and nt_partialmatch() used to return -2 to signal that the node was not found. However, we were passing in a revnum to index_node() that we knew should exist, so the only reason it could return NULL was due to some internal error or perhaps out of memory. Let's not use "not found" for these cases. I suppose we never noticed this because these error never happen in practice. I think there are more places where we should error out instead of reporting that the node was not found, but the cases mentioned above were all I cared about right now (because using the same error code for all failures simplified some future patches). Differential Revision: https://phab.mercurial-scm.org/D3457
Fri, 04 May 2018 21:58:43 -0700 revlog: extract function for getting node from known-to-exist rev
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 May 2018 21:58:43 -0700] rev 37904
revlog: extract function for getting node from known-to-exist rev Many of the calls to index_node() (which converts a rev to a nodeid) are done with a rev that's know to exist. If the function fails, there's something really wrong and we should just abort. This was done in only one place. This patch starts by extracting that code to a function that we can reuse in later patches. Differential Revision: https://phab.mercurial-scm.org/D3456
Mon, 07 May 2018 09:15:29 -0700 shortest: make {shortest("fffffffff")} work again
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 09:15:29 -0700] rev 37903
shortest: make {shortest("fffffffff")} work again {shortest("fffffffff")} should shorten it to the shortest unambiguous prefix for the working directory. It used to do that until I broke it in 7b2955624777 (scmutil: make shortesthexnodeidprefix() take a full binary nodeid, 2018-04-14), when we started returning the full hex nodeid for any working directory prefix shorter than 40 hex digits. This patch fixes it by catching WdirUnsupported specifically. Differential Revision: https://phab.mercurial-scm.org/D3455
Sun, 29 Apr 2018 14:29:09 -0700 revlog: use radix tree also for matching keys shorter than 4 hex digits
Martin von Zweigbergk <martinvonz@google.com> [Sun, 29 Apr 2018 14:29:09 -0700] rev 37902
revlog: use radix tree also for matching keys shorter than 4 hex digits I don't know what the reason for the 4-digit limit was, and I can't think of any real disadvantages of using the radix tree also when the requested minimum length is short. This speeds up `hg log -T '{shortest(node,1)}\n'` from 2m16s to 4.5s by making that not fall back to pure code. Differential Revision: https://phab.mercurial-scm.org/D3453
Fri, 06 Apr 2018 12:55:32 -0700 context: convert to hex for error message only for 20-byte changeid
Martin von Zweigbergk <martinvonz@google.com> [Fri, 06 Apr 2018 12:55:32 -0700] rev 37901
context: convert to hex for error message only for 20-byte changeid Now that 20-byte strings unambiguously mean binary (or a bug), we can specialize the conversion to hex for that case. Differential Revision: https://phab.mercurial-scm.org/D3452
Fri, 06 Apr 2018 12:59:17 -0700 context: clarify that only one attempt is made to interpret changeid
Martin von Zweigbergk <martinvonz@google.com> [Fri, 06 Apr 2018 12:59:17 -0700] rev 37900
context: clarify that only one attempt is made to interpret changeid We can now tell what type of revision specifier we have just by looking at it (we no longer attempt to interpret it in one way after the other -- that's now in scmutil.revsymbol()). Let's clarify this in the code by swithing to if/elif. Differential Revision: https://phab.mercurial-scm.org/D3451
Fri, 06 Apr 2018 12:45:08 -0700 context: only bother looking for broken dirstate for 20-byte changeid
Martin von Zweigbergk <martinvonz@google.com> [Fri, 06 Apr 2018 12:45:08 -0700] rev 37899
context: only bother looking for broken dirstate for 20-byte changeid If we fail to look up a changeid in changectx.__init__, we check if it exactly matches any of the dirstate parents, and if it does, we print a more specific message ("working directory has unknown parent '...'!" instead of "unknown revision '...'"). The dirstate parents are always 20 bytes, so there's no need to check for a match when the given changeid is not 20 bytes. (And now that all the other allowed forms of changeid have been moved out of the constructor, there's no risk that a changeid that did match a dirstate parent was actually a valid bookmark.) Differential Revision: https://phab.mercurial-scm.org/D3450
Sat, 28 Apr 2018 23:16:41 -0700 context: drop support for looking up context by ambiguous changeid (API)
Martin von Zweigbergk <martinvonz@google.com> [Sat, 28 Apr 2018 23:16:41 -0700] rev 37898
context: drop support for looking up context by ambiguous changeid (API) This removes support for using the changectx constructor (and thereby repo[x]) for looking up contexts by a stringified int, a namespace key (e.g. a bookmark), or a partial hex nodeid. This means that e.g. repo[<hex nodeid>] will now fail even if a bookmark with the same name exists (which is a good thing IMO). It also means that doing repo[<non-existent node>] no longer ends up loading namespaces (which was a surprising side-effect of creating of failing to create a context object that I recently ran into while debugging something unrelated to this series). Differential Revision: https://phab.mercurial-scm.org/D3449
Sat, 28 Apr 2018 23:54:07 -0700 tests: pass parent revision as integer to repo[x] in test-context-metadata.t
Martin von Zweigbergk <martinvonz@google.com> [Sat, 28 Apr 2018 23:54:07 -0700] rev 37897
tests: pass parent revision as integer to repo[x] in test-context-metadata.t Support for looking up by stringified int is going away. It's already deprecated, but I think I didn't notice this case because the test case pipes through `grep`. Differential Revision: https://phab.mercurial-scm.org/D3448
Sat, 05 May 2018 11:42:42 +0900 bookmarks: cache reverse mapping (issue5868)
Yuya Nishihara <yuya@tcha.org> [Sat, 05 May 2018 11:42:42 +0900] rev 37896
bookmarks: cache reverse mapping (issue5868) I chose a simpler implementation. If the initial cost of building reverse mapping is significant, we'll have to move it under @propertycache. The nodemap could be a dict of sets, but I think keeping a sorted list is better since each node is likely to have zero/one bookmark. Micro-benchmark with 1001 bookmarks and 1001 revisions: $ for n in `seq 0 1000`; do touch $n; hg book book$n; hg ci -qAm$n; done $ hg bookmarks --time > /dev/null (orig) time: real 0.040 secs (user 0.050+0.000 sys 0.000+0.000) (new) time: real 0.040 secs (user 0.040+0.000 sys 0.010+0.000) $ hg log -T '{bookmarks}\n' --time > /dev/null (orig) time: real 0.160 secs (user 0.160+0.000 sys 0.000+0.000) (new) time: real 0.090 secs (user 0.100+0.000 sys 0.000+0.000)
Sat, 05 May 2018 11:44:43 +0900 bookmarks: make argument names of _set/_del() more specific
Yuya Nishihara <yuya@tcha.org> [Sat, 05 May 2018 11:44:43 +0900] rev 37895
bookmarks: make argument names of _set/_del() more specific
Sat, 05 May 2018 11:34:03 +0900 bookmarks: extract function that looks up bookmark names by node
Yuya Nishihara <yuya@tcha.org> [Sat, 05 May 2018 11:34:03 +0900] rev 37894
bookmarks: extract function that looks up bookmark names by node
Sat, 05 May 2018 11:21:41 +0900 bookmarks: hide dict behind bmstore class
Yuya Nishihara <yuya@tcha.org> [Sat, 05 May 2018 11:21:41 +0900] rev 37893
bookmarks: hide dict behind bmstore class This should make it clearer that the bmstore doesn't expose all dict APIs.
Sat, 05 May 2018 19:00:03 -0700 tests: remove pid file by default
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 05 May 2018 19:00:03 -0700] rev 37892
tests: remove pid file by default Previously, killdaemons.py would kill PIDs listed in a file then leave the file lingering around. If the PIDs are killed, then there's no point leaving the PID file around. In the worst case, a later invocation of killdaemons.py (run-tests.py invokes killdaemons.py after running a test) could kill a separate process whose PID conflicted with a previously-killed process. By removing the PID file, we eliminate this possibility. Some tests were manually removing the PID file after calling killdaemons.py. So we update these tests to not do this. Differential Revision: https://phab.mercurial-scm.org/D3443
Mon, 30 Apr 2018 19:54:55 -0700 tests: remove #require killdaemons
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Apr 2018 19:54:55 -0700] rev 37891
tests: remove #require killdaemons The killdaemons hghave feature has returned True since it was introduced in 448d0c452140. As such, "#require killdaemons" has no effect and is superfluous. So we remove instances of it. Differential Revision: https://phab.mercurial-scm.org/D3442
Sat, 05 May 2018 18:35:16 -0700 pycompat: export queue module instead of symbols in module (API)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 05 May 2018 18:35:16 -0700] rev 37890
pycompat: export queue module instead of symbols in module (API) Previously, pycompat and util re-exported individual symbols from the queue module. This had the side-effect of forcing the loading of the queue module whenever pycompat/util was imported. These symbols aren't used very often. So importing the module to get a handle on the symbols is wasteful. This commit changes pycompat so it no longer exports the individual symbols in the queue module. Instead, we make the imported module a "public" symbol. We drop the individual symbol aliases from the util module. All consumers are updated to use pycompat.queue.* instead. This change makes 300 invocations of `hg log -r. -T '{rev}\n'` a little faster: before: 18.44s after: 17.87s Differential Revision: https://phab.mercurial-scm.org/D3441
Sat, 05 May 2018 18:41:51 -0700 demandimport: make module ignores a set (API)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 05 May 2018 18:41:51 -0700] rev 37889
demandimport: make module ignores a set (API) The list of modules to ignore is used for membership testing. Yet it is defined as a list. Sets are more efficient for membership testing. So this commit converts the module list to a set. Since we took an API hit, I renamed the variable to further clarify the change. This appears to reduce the CPU time for running 300 invocations of `hg log -r. -T '{rev}'` on my i7-6700K: before: 18.64s after: 18.44s Differential Revision: https://phab.mercurial-scm.org/D3440
Thu, 19 Apr 2018 20:33:43 +0900 cmdutil: remove unused 'confirmopts' constant
Yuya Nishihara <yuya@tcha.org> [Thu, 19 Apr 2018 20:33:43 +0900] rev 37888
cmdutil: remove unused 'confirmopts' constant Follows up f10cb49951e1.
Thu, 03 May 2018 15:08:16 +0900 formatter: ditch namedtuple in favor of attr
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 15:08:16 +0900] rev 37887
formatter: ditch namedtuple in favor of attr
Sun, 29 Apr 2018 15:52:01 +0900 log: consume --stat/patch options at constructor of changesetprinter
Yuya Nishihara <yuya@tcha.org> [Sun, 29 Apr 2018 15:52:01 +0900] rev 37886
log: consume --stat/patch options at constructor of changesetprinter The variable name, self.diffopts, was confusing. Let's split it to two booleans.
Sun, 29 Apr 2018 15:44:17 +0900 log: cache diffopts instance
Yuya Nishihara <yuya@tcha.org> [Sun, 29 Apr 2018 15:44:17 +0900] rev 37885
log: cache diffopts instance It appears that calling patch.diff*opts() repeatedly has some cost. $ hg log -T '{rev}\n' -R mercurial --time > /dev/null (orig) time: real 4.430 secs (user 4.370+0.000 sys 0.050+0.000) (new) time: real 1.950 secs (user 1.880+0.000 sys 0.060+0.000) 'diffopts or {}' isn't necessary as patch.diff*opts() accepts opts=None.
Sat, 05 May 2018 18:06:45 -0700 merge with stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 05 May 2018 18:06:45 -0700] rev 37884
merge with stable
Sun, 01 Jul 2018 23:36:53 +0900 encoding: alias cp65001 to utf-8 on Windows stable
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 23:36:53 +0900] rev 37883
encoding: alias cp65001 to utf-8 on Windows As far as I can tell, cp65001 is the Windows name for UTF-8. I don't know how different it is from the UTF-8, but Python 3 appears to have introduced new codec for cp65001, so the alias is enabled only for Python 2. https://bugs.python.org/issue13216 This patch is untested, but hopefully fixes the following issue. https://bitbucket.org/tortoisehg/thg/issues/5127/
Wed, 04 Jul 2018 14:19:13 +0200 windows: fix incorrect detection of broken pipe when writing to pager stable
Sune Foldager <cryo@cyanite.org> [Wed, 04 Jul 2018 14:19:13 +0200] rev 37882
windows: fix incorrect detection of broken pipe when writing to pager Paging e.g. hg incoming on Windows and quitting the pager before the output is consumed will print 'abort: Invalid argument'. This is because the windows error 0xE8 (ERROR_NO_DATA) is mapped to EINVAL even though it is documented as 'The pipe is being closed'. Note that this fix assumes that Windows' last error code is still valid in the exception handler. It works correctly in all my tests. A simpler fix would be to just map EINVAL to EPIPE, like was done is flush previously, but that would be less precise. This error was not observed previously, when pager was an extension.
Tue, 03 Jul 2018 12:10:22 -0400 Added signature for changeset 0b63a6743010 stable
Augie Fackler <raf@durin42.com> [Tue, 03 Jul 2018 12:10:22 -0400] rev 37881
Added signature for changeset 0b63a6743010
Tue, 03 Jul 2018 12:10:21 -0400 Added tag 4.6.2 for changeset 0b63a6743010 stable
Augie Fackler <raf@durin42.com> [Tue, 03 Jul 2018 12:10:21 -0400] rev 37880
Added tag 4.6.2 for changeset 0b63a6743010
Mon, 25 Jun 2018 16:36:14 +0200 procutil: use unbuffered stdout on Windows stable 4.6.2
Sune Foldager <cryo@cyanite.org> [Mon, 25 Jun 2018 16:36:14 +0200] rev 37879
procutil: use unbuffered stdout on Windows Windows doesn't support line buffering, treating it as fully buffered. This causes output of slow commands to stutter. We use unbuffered instead.
Tue, 19 Jun 2018 22:45:52 +0900 merge: do not fill manifest of committed revision with pseudo node (issue5526) stable
Yuya Nishihara <yuya@tcha.org> [Tue, 19 Jun 2018 22:45:52 +0900] rev 37878
merge: do not fill manifest of committed revision with pseudo node (issue5526) Since a75d24539aba "convert: fix convert dropping p2 contents during filemap merge", wctx is not always a committablectx because the convert extension passes in repo[n] as wctx. If wctx is a committed changeset, its manifest dict shouldn't be mutated reflecting to the working directory.
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip