Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:50:00 +0900] rev 38030
hgweb: convert {diff} to a mappinggenerator with named template
No more bare generator. Fortunately, this one is associated with a single
template, so it can be a mappinggenerator.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:43:41 +0900] rev 38029
hgweb: use template context to render {lines} of {diff}
This is a preferred way to process nested templates.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:42:15 +0900] rev 38028
hgweb: wrap {lines} of {diff} with mappedgenerator
This can't be a mappinggenerator as it switches the templates conditionally.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:38:19 +0900] rev 38027
hgweb: move prettyprintlines() closure out of diffs()
This will be wrapped with mappedgenerator.
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 29 Apr 2018 22:27:05 +0530] rev 38026
remotenames: enable the storage config option if extension is enabled
Before this patch, the config option to store remotenames was set to False by
default and remotenames extension does not set it True. So if you enable
remotenames extension without setting 'experimental.remotenames=True', you won't
get the remotenames.
This patch makes remotenames enable the config option if then extension is
enabled which makes sense.
Differential Revision: https://phab.mercurial-scm.org/D3520
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 29 Apr 2018 22:42:54 +0530] rev 38025
tests: clone the repo over ssh in tests/test-logexchange.t
Cloning a local repo in tests, and normally too does not perform the actual
clone, rather it copies the file contents. This makes remotenames information
not being transferred. Let's clone over ssh so that we can test remotenames
correctly.
Differential Revision: https://phab.mercurial-scm.org/D3519
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 29 Apr 2018 22:39:45 +0530] rev 38024
remotenames: check the remotepath with url containing user information too
Current logic to match a remotepatch to a user defined path first removes the
authentication information from the url and then tries to match it. However this
is not true every time. If we clone a repo using ssh, the default path contains
the user information too.
Differential Revision: https://phab.mercurial-scm.org/D3518
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 May 2018 09:16:26 -0700] rev 38023
shortest: avoid magic number "41"
As suggested by Yuya. Feel free to fold into D3502.
Differential Revision: https://phab.mercurial-scm.org/D3531
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 May 2018 07:31:51 -0700] rev 38022
revlog: handle error from node lookup
I missed this in D3499. Thanks to Yuya for spotting it.
Differential Revision: https://phab.mercurial-scm.org/D3530
Matt Harbison <matt_harbison@yahoo.com> [Fri, 11 May 2018 22:07:43 -0400] rev 38021
debugextensions: process extensions loaded from the local repository too
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 22:13:13 -0400] rev 38020
phabricator: drop support for the deprecated `phabricator.token` config
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 18:22:02 +0900] rev 38019
help: load module doc of disabled extension in extensions.disabledcmd()
This helps rewriting _finddisablecmd() to not load the module.
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 18:15:43 +0900] rev 38018
extensions: extract closure that looks for commands from disabled module
I'll rewrite this function to not load disabled extensions.
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 18:13:43 +0900] rev 38017
extensions: drop dead code trying to exclude deprecated disabled commands
Here 'ext' is a tuple, which means ext.__doc__ describes about the Python
tuple type. Fixing this would break 'hg help glog', which currently shows
some nice explanation, so this patch just removes the dead code.
$ hg help glog
'glog' is provided by the following extension:
graphlog command to view revision graphs from a shell (DEPRECATED)
(use 'hg help extensions' for information on enabling extensions)
Yuya Nishihara <yuya@tcha.org> [Fri, 11 May 2018 21:53:26 +0900] rev 38016
util: drop remainder of dateutil/procutil aliases (API)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 15:57:12 -0700] rev 38015
shortest: move revnum-disambiguation out of revlog
I want to be able to change how we disambiguate and I think having
revlog.shortest() worry only about finding a prefix that's unambiguous
among nodeids makes more sense.
This slows down `hg log -T '{shortest(node,1)}\n'` from 4.0s to 4.1s.
Differential Revision: https://phab.mercurial-scm.org/D3502
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 15:25:16 -0700] rev 38014
shortest: remove unnecessary check for revnum in isvalid()
We now always disambiguating against revnums after we've found an
otherwise valid prefix, so we can safely remove the early isrev()
check in isvalid().
Differential Revision: https://phab.mercurial-scm.org/D3501
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 15:01:33 -0700] rev 38013
shortest: make pure code also disambigute against revnums at end
This makes the pure code more similar to the native code in that it
first finds a prefix that's unambiguous among nodeids and then adds
hex digits until it no longer looks like a revnum. It will allow us to
even better separate the disambiguation with revnums in a later patch.
With this patch `hg log -r 0::50 -T '{shortest(node,1)}'` with no
native code goes from 25s to 43s. It wasn't exactly usable to begin
with, so I don't feel too bad about it.
Differential Revision: https://phab.mercurial-scm.org/D3500
Martin von Zweigbergk <martinvonz@google.com> [Wed, 02 May 2018 23:17:58 -0700] rev 38012
revlog: use node tree (native code) for shortest() calculation
I want to rewrite revlog.shortest() to disambiguate only among hex
nodeids and then disambiguate the result with revnums at a higher
level (in scmutil). However, that would slow down `hg log -T
'{shortest(node,1)}\n'` from 5.0s to 6.8s, which I wasn't sure would
be acceptable. So this patch makes revlog.shortest() use the node tree
for finding the length of the shortest prefix that's unambiguous among
nodeids. Once that has been found, it makes it longer until it is also
not ambiguous with a revnum.
This speeds up `hg log -T '{shortest(node,1)}\n'` from 5.0s to 4.0s.
Differential Revision: https://phab.mercurial-scm.org/D3499
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 16:49:31 -0700] rev 38011
shelve: reduce scope of merge tool config override
The config override seems to have a much greater scope than it needed
to. I *think* it's only relevant in the while merging files. The
rebase step also cares about the merge tool, but we seem to be
explicitly passing it to rebase (around line 755).
Differential Revision: https://phab.mercurial-scm.org/D3517
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:43:32 -0400] rev 38010
util: drop _deprecatedfunc()
It was only needed for the previously removed forwarding.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:41:19 -0400] rev 38009
util: drop deprecated forwarding to procutil (API)
Matt Harbison <matt_harbison@yahoo.com> [Fri, 11 May 2018 00:58:51 -0400] rev 38008
tests: migrate demandimport.py away from deprecated `util` module symbols
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 22:00:41 -0400] rev 38007
templatekw: drop deprecated showlist() and showdict() (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:37:23 -0400] rev 38006
util: drop deprecated forwarding to dateutil (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:34:40 -0400] rev 38005
util: drop deprecated forwarding to stringutil (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:55:01 -0400] rev 38004
scmutil: remove deprecated revpairnodes method (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:54:37 -0400] rev 38003
merge: drop support for using updateresults as tuples (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:54:12 -0400] rev 38002
cmdutil: drop deprecated log helper methods (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:53:48 -0400] rev 38001
cmdutil: drop deprecated precursor of registrar.command (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:53:29 -0400] rev 38000
cmdutil: remove deprecated _revertprefetch code (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:50:21 -0400] rev 37999
tests: fix deprecation warning in test-url.py
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:34:55 +0900] rev 37998
hgweb: remove unused argument 'tmpl' from listfilediffs()
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.
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.
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.
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.
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.
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.
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)
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().
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?
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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