Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:57:15 -0400] rev 37924
tests: port test-dispatch.py to Python 3
Differential Revision: https://phab.mercurial-scm.org/D3511
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:55:04 -0400] rev 37923
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:50:24 -0400] rev 37922
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:49:49 -0400] rev 37921
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
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 19:43:43 -0700] rev 37920
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:35:00 -0400] rev 37919
py3: whitelist three passing cvs convert tests
Differential Revision: https://phab.mercurial-scm.org/D3490
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:32:21 -0400] rev 37918
cvsps: convert encoding name to sysstr
Differential Revision: https://phab.mercurial-scm.org/D3489
Martin von Zweigbergk <martinvonz@google.com> [Wed, 09 May 2018 13:46:31 -0700] rev 37917
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
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 22:58:33 +0900] rev 37916
hgweb: wrap {instabilities} by hybridlist()
This is a list of simple values, which can be a hybrid list.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 22:55:33 +0900] rev 37915
hgweb: wrap {whyunstable} with mappinggenerator
This is also a generator of mappings, which needs a wrapper.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 22:54:36 +0900] rev 37914
hgweb: wrap {succsandmarkers} with mappinggenerator
This is also a generator of mappings, which needs a wrapper.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:46:33 +0900] rev 37913
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.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:41:19 +0900] rev 37912
hgweb: drop tmpl argument from webutil.showtag() and showbookmark()
It's replaced by a context argument passed to a mappinggenerator.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:39:26 +0900] rev 37911
hgweb: wrap {changelogtag}, {changesettag}, and {changesetbookmark}
These can't be hybrid lists as they've associated with named template, 't1'.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:29:31 +0900] rev 37910
hgweb: drop useless **args from webutil.showtag() and showbookmark()
Callers never pass excessive arguments to these functions.
Anton Shestakov <av6@dwimlabs.net> [Tue, 08 May 2018 19:00:01 +0800] rev 37909
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.
Anton Shestakov <av6@dwimlabs.net> [Tue, 08 May 2018 17:54:57 +0800] rev 37908
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.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:06:39 +0900] rev 37907
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.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:05:38 +0900] rev 37906
hgweb: wrap {inbranch} by hybridlist()
This is also a 0/1-length list of a simple value, can be a hybrid list.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:04:53 +0900] rev 37905
hgweb: wrap {branches} by hybridlist()
This is a 0/1-length list of a simple value, can be a hybrid list.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:03:49 +0900] rev 37904
hgweb: wrap {bookmarks} by hybridlist()
This is also a list of simple values.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:02:36 +0900] rev 37903
hgweb: wrap {tags} by hybridlist()
This one is a list of simple values, which can be a hybrid list.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Apr 2018 00:00:29 +0900] rev 37902
hgweb: wrap {rename} with mappinglist
No bare list of mappings should be put in a template mapping.
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:23:41 -0400] rev 37901
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:22:00 -0400] rev 37900
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:07:24 -0400] rev 37899
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:06:49 -0400] rev 37898
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:58:08 -0400] rev 37897
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:46:33 -0400] rev 37896
tests: port test-revlog-raw.py to Python 3
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D3496
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:40:04 -0400] rev 37895
tests: migrate test-wsgirequest.py to Python 3
# skip-blame adding and removing b prefixes
Differential Revision: https://phab.mercurial-scm.org/D3495
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:31:49 -0400] rev 37894
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:30:24 -0400] rev 37893
tests: prefer string concatenation with () instead of \ in parseindex2 tests
Differential Revision: https://phab.mercurial-scm.org/D3493
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:17:48 -0400] rev 37892
tests: port test-simplemerge.py to Python 3
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D3492
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 10:21:24 -0400] rev 37891
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:30:29 -0400] rev 37890
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:28:56 -0400] rev 37889
cvsps: wrap bytes in bytestr before %r-ing it
Differential Revision: https://phab.mercurial-scm.org/D3487
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:27:22 -0400] rev 37888
convcmd: make a copy of heads before mutating it
Differential Revision: https://phab.mercurial-scm.org/D3486
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:26:23 -0400] rev 37887
cvsps: portably convert int to bytes
Differential Revision: https://phab.mercurial-scm.org/D3485
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:24:04 -0400] rev 37886
cvsps: wrap cmp methods (deprecated) in functools.cmp_to_key
Differential Revision: https://phab.mercurial-scm.org/D3484
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:18:43 -0400] rev 37885
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 01:14:23 -0400] rev 37884
cvsps: add b prefixes to regular expressions
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D3482
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:50:08 -0400] rev 37883
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:46:05 -0400] rev 37882
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:31:57 -0400] rev 37881
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:24:45 -0400] rev 37880
tests: port test-pathencode.py to Python 3
# skip-blame uninteresting changes, mainly b prefixes
Differential Revision: https://phab.mercurial-scm.org/D3475
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:18:46 -0400] rev 37879
tests: port test-hgwebdir-paths.py to Python 3
# skip-blame just b prefixes, nothing interesting
Differential Revision: https://phab.mercurial-scm.org/D3474
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:17:17 -0400] rev 37878
tests: port test-walkrepo.py to Python 3
# skip-blame just b prefixes, nothing interesting
Differential Revision: https://phab.mercurial-scm.org/D3473
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:14:23 -0400] rev 37877
tests: port test-minifileset.py to Python 3
# skip-blame all b prefixes, nothing interesting
Differential Revision: https://phab.mercurial-scm.org/D3472
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:13:56 -0400] rev 37876
minifileset: fix on Python 3
Found by porting test-minifileset.py to Python 3.
Differential Revision: https://phab.mercurial-scm.org/D3471
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:08:48 -0400] rev 37875
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:08:21 -0400] rev 37874
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
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:06:08 -0400] rev 37873
util: make util.url __repr__ consistent on Python 2 and 3
Differential Revision: https://phab.mercurial-scm.org/D3468
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 00:05:46 -0400] rev 37872
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
Augie Fackler <augie@google.com> [Thu, 26 Apr 2018 23:33:27 -0400] rev 37871
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
Augie Fackler <augie@google.com> [Thu, 26 Apr 2018 21:39:35 -0400] rev 37870
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
Augie Fackler <augie@google.com> [Thu, 26 Apr 2018 21:38:49 -0400] rev 37869
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
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 12:18:09 -0700] rev 37868
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
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 14:32:55 -0700] rev 37867
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
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 14:32:43 -0700] rev 37866
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
Martin von Zweigbergk <martinvonz@google.com> [Sat, 05 May 2018 00:16:43 -0700] rev 37865
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