Thu, 17 May 2018 21:55:00 +0900 test-merge-tools: create repo directory to free $TESTTMP for temporary files
Yuya Nishihara <yuya@tcha.org> [Thu, 17 May 2018 21:55:00 +0900] rev 38029
test-merge-tools: create repo directory to free $TESTTMP for temporary files
Sat, 12 May 2018 23:44:08 +0200 notify: add option to include function names in the diff output
Joerg Sonnenberger <joerg@bec.de> [Sat, 12 May 2018 23:44:08 +0200] rev 38028
notify: add option to include function names in the diff output This is a localized version of diff.showfunc. Differential Revision: https://phab.mercurial-scm.org/D3553
Wed, 16 May 2018 10:34:31 -0700 tests: update py3 test since json fields are now sorted
Martin von Zweigbergk <martinvonz@google.com> [Wed, 16 May 2018 10:34:31 -0700] rev 38027
tests: update py3 test since json fields are now sorted The fields have been sorted since 814151cd8c4a (logcmdutil: rewrite jsonchangeset printer to be backed by jsonformatter, 2018-04-13), and the test case has thus been failing since that commit. Differential Revision: https://phab.mercurial-scm.org/D3570
Wed, 16 May 2018 15:48:12 -0700 tests: test-parseindex.t works just fine with chg
Kyle Lippincott <spectral@google.com> [Wed, 16 May 2018 15:48:12 -0700] rev 38026
tests: test-parseindex.t works just fine with chg In 538e850ae737 I annotated tests that failed with chg with "#require no-chg", but did not investigate why the tests were failing. This test was failing for unrelated reasons (I forgot to rebuild hg) and so should not be marked as no-chg. Test Plan: make local pushd contrib/chg make clean; make popd cd tests for f in '' --with-chg=../contrib/chg/chg; do ./run-tests.py --local $f test-parseindex.t done Differential Revision: https://phab.mercurial-scm.org/D3571
Fri, 27 Apr 2018 21:55:02 +0530 py3: convert the report to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 27 Apr 2018 21:55:02 +0530] rev 38025
py3: convert the report to bytes Differential Revision: https://phab.mercurial-scm.org/D3569
Fri, 11 May 2018 10:36:28 -0700 json: reject unicode on py2 as well
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 May 2018 10:36:28 -0700] rev 38024
json: reject unicode on py2 as well This makes it consistent with the behavior on py3. Differential Revision: https://phab.mercurial-scm.org/D3536
Wed, 16 May 2018 20:22:23 +0900 dispatch: mask negative exit code recorded in blackbox log
Yuya Nishihara <yuya@tcha.org> [Wed, 16 May 2018 20:22:23 +0900] rev 38023
dispatch: mask negative exit code recorded in blackbox log That's what we do for the exit code delivered to the environment.
Wed, 16 May 2018 20:17:50 +0900 dispatch: fix exit code of unhandled exception recorded in blackbox log
Yuya Nishihara <yuya@tcha.org> [Wed, 16 May 2018 20:17:50 +0900] rev 38022
dispatch: fix exit code of unhandled exception recorded in blackbox log Spotted by Martin von Zweigbergk. We might want to change the exit code to -1 (i.e. 255) because 1 means non-abort error in hg, but that's another issue.
Tue, 15 May 2018 11:52:43 -0700 tests: mark tests that fail when using chg as #require no-chg
Kyle Lippincott <spectral@google.com> [Tue, 15 May 2018 11:52:43 -0700] rev 38021
tests: mark tests that fail when using chg as #require no-chg As far as I can tell, most of these failures are due to using $HGPORT, which it seems chg might be using itself? I don't know enough to debug these failures to fix them properly. Differential Revision: https://phab.mercurial-scm.org/D3562
Fri, 27 Apr 2018 21:54:37 +0530 py3: use pycompat.bytestr() instead of str() in extensions.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 27 Apr 2018 21:54:37 +0530] rev 38020
py3: use pycompat.bytestr() instead of str() in extensions.py Differential Revision: https://phab.mercurial-scm.org/D3568
Wed, 16 May 2018 07:58:02 +0530 py3: use pycompat.bytestr() on bytes before %r-ing it
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 16 May 2018 07:58:02 +0530] rev 38019
py3: use pycompat.bytestr() on bytes before %r-ing it Differential Revision: https://phab.mercurial-scm.org/D3567
Thu, 15 Feb 2018 17:15:21 +0530 py3: add b'' prefixes in tests/test-extension.t
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 15 Feb 2018 17:15:21 +0530] rev 38018
py3: add b'' prefixes in tests/test-extension.t # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D3564
Fri, 27 Apr 2018 20:55:10 +0530 py3: suppress the value returned by .write() calls
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 27 Apr 2018 20:55:10 +0530] rev 38017
py3: suppress the value returned by .write() calls These return values are not present on Python 2. Differential Revision: https://phab.mercurial-scm.org/D3563
Tue, 15 May 2018 09:57:58 -0700 tests: test failure reporting in blackbox code
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 May 2018 09:57:58 -0700] rev 38016
tests: test failure reporting in blackbox code Differential Revision: https://phab.mercurial-scm.org/D3560
Mon, 14 May 2018 12:53:13 +0200 export: add -B option to select a bookmark
David Demelier <markand@malikania.fr> [Mon, 14 May 2018 12:53:13 +0200] rev 38015
export: add -B option to select a bookmark Just like `hg email -B`, `hg strip -B`, supports -B in export to select a list of changesets reachable from a bookmark.
Sat, 12 May 2018 18:05:50 -0700 packaging: move most packaging targets to own Makefile
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 18:05:50 -0700] rev 38014
packaging: move most packaging targets to own Makefile Since we're putting everything packaging under one roof, let's define the make targets related to packaging there as well. I didn't move the "osx" target because it is non-trivial. Some targets did change slightly as part of the move. But it was mostly around path normalization. Differential Revision: https://phab.mercurial-scm.org/D3552
Sat, 12 May 2018 12:27:51 -0700 packaging: make packaging scripts less reliant on pwd
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 12:27:51 -0700] rev 38013
packaging: make packaging scripts less reliant on pwd The scripts currently assume they are executed from the repo root. This feels like an arbitrary restriction. Let's fix that. Differential Revision: https://phab.mercurial-scm.org/D3551
Sat, 12 May 2018 10:57:04 -0700 packaging: move contrib/macosx to contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:57:04 -0700] rev 38012
packaging: move contrib/macosx to contrib/packaging/ And update various references throughout the code. Differential Revision: https://phab.mercurial-scm.org/D3550
Sat, 12 May 2018 10:50:30 -0700 packaging: move linux-wheel-centos5-blacklist to contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:50:30 -0700] rev 38011
packaging: move linux-wheel-centos5-blacklist to contrib/packaging/ Differential Revision: https://phab.mercurial-scm.org/D3549
Sat, 12 May 2018 10:47:44 -0700 packaging: move build-linux-wheels.sh to contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:47:44 -0700] rev 38010
packaging: move build-linux-wheels.sh to contrib/packaging/ Differential Revision: https://phab.mercurial-scm.org/D3548
Sat, 12 May 2018 17:16:09 -0700 packaging: move contrib/debian to contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 17:16:09 -0700] rev 38009
packaging: move contrib/debian to contrib/packaging/ Differential Revision: https://phab.mercurial-scm.org/D3547
Sat, 12 May 2018 10:41:08 -0700 packaging: move buildrpm to contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:41:08 -0700] rev 38008
packaging: move buildrpm to contrib/packaging/ Differential Revision: https://phab.mercurial-scm.org/D3546
Sat, 12 May 2018 10:38:36 -0700 packaging: move mercurial.spec to contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:38:36 -0700] rev 38007
packaging: move mercurial.spec to contrib/packaging/ Differential Revision: https://phab.mercurial-scm.org/D3545
Sat, 12 May 2018 10:31:34 -0700 packaging: move builddeb into contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:31:34 -0700] rev 38006
packaging: move builddeb into contrib/packaging/ Differential Revision: https://phab.mercurial-scm.org/D3544
Sat, 12 May 2018 10:28:00 -0700 packaging: move packagelib.sh into contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:28:00 -0700] rev 38005
packaging: move packagelib.sh into contrib/packaging/ This required some minor path adjustments in scripts referencing this path. Differential Revision: https://phab.mercurial-scm.org/D3543
Sat, 12 May 2018 10:33:11 -0700 packaging: move some docker scripts into contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:33:11 -0700] rev 38004
packaging: move some docker scripts into contrib/packaging/ This required some minor path adjustments in the scripts. Differential Revision: https://phab.mercurial-scm.org/D3542
Sat, 12 May 2018 13:17:01 -0700 packaging: move most of contrib/docker to contrib/packaging/docker
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 13:17:01 -0700] rev 38003
packaging: move most of contrib/docker to contrib/packaging/docker contrib/ is kind of a dumping ground for all kinds of random things. Many of the files in contrib/ are related to packaging. But sorting out how everything is related is a lot of effort since it is all mixed together. This commit starts the process of refactoring everything related to packaging so it all lives under one roof. Most content from contrib/docker is simply moved to contrib/packaging/docker and all references are updated. Differential Revision: https://phab.mercurial-scm.org/D3541
Sat, 12 May 2018 12:12:12 -0700 setup: reformat options argument
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 12:12:12 -0700] rev 38002
setup: reformat options argument This makes things a bit more easier to manage IMO. Differential Revision: https://phab.mercurial-scm.org/D3540
Sat, 12 May 2018 10:53:53 -0700 contrib: remove fixpax.py
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 May 2018 10:53:53 -0700] rev 38001
contrib: remove fixpax.py This was used as part of bdist_mpkg. And we stopped using bdist_mpkg after db5084d27df5. Differential Revision: https://phab.mercurial-scm.org/D3539
Tue, 15 May 2018 22:12:55 +0900 push: continue without locking on lock failure other than EEXIST (issue5882) stable
Yuya Nishihara <yuya@tcha.org> [Tue, 15 May 2018 22:12:55 +0900] rev 38000
push: continue without locking on lock failure other than EEXIST (issue5882) This code was added by 3f5e75c22585 "push: make locking of source optional (issue3684)", but EACCES isn't the only error that could be triggered by filesystem permission. I think catching LockUnavailable is more appropriate than testing errno value by caller.
Fri, 11 May 2018 23:28:02 -0700 revlog: handle errors from index_node() in nt_insert() and index_slice_del()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 May 2018 23:28:02 -0700] rev 37999
revlog: handle errors from index_node() in nt_insert() and index_slice_del() Same idea as in a9d9802d577e (revlog: don't say "not found" on internal error, 2018-05-04). Differential Revision: https://phab.mercurial-scm.org/D3558
Mon, 14 May 2018 13:11:04 +0200 help: add new deprecated topic
David Demelier <markand@malikania.fr> [Mon, 14 May 2018 13:11:04 +0200] rev 37998
help: add new deprecated topic Add a deprecated topic which lists most of the commands and options that are not recommended anymore.
Mon, 14 May 2018 23:00:30 -0400 phabricator: split auth.url into the standard auth.schemes and auth.prefix
Matt Harbison <matt_harbison@yahoo.com> [Mon, 14 May 2018 23:00:30 -0400] rev 37997
phabricator: split auth.url into the standard auth.schemes and auth.prefix It seems better to reuse the existing function to find the proper [auth] block, even if not all of the possible settings may be of interest. The other callers of readauthforuri() make a trip through the password database to fetch the user from the URI. But in the little experimenting I did here, the username always came back as None. Since readauthforuri() wants it to make sure that user@prefix matches user@url, it seems that parsing the URL and pulling out the user component should be equivalent.
Sat, 12 May 2018 00:34:01 -0400 phabricator: migrate [phabricator.auth] to [auth]
Matt Harbison <matt_harbison@yahoo.com> [Sat, 12 May 2018 00:34:01 -0400] rev 37996
phabricator: migrate [phabricator.auth] to [auth] This resurrects the warning mechanism removed in 20a4543e9a2b. I'm not worried about the copy/paste of the code for a brief transitional period.
Sat, 12 May 2018 15:33:09 +0900 dispatch: unify handling of None returned by a command function
Yuya Nishihara <yuya@tcha.org> [Sat, 12 May 2018 15:33:09 +0900] rev 37995
dispatch: unify handling of None returned by a command function A command function may return None in place of 0 just for convenience, but dispatch() doesn't need to inherit that property. This patch makes it be friendly to callers.
Fri, 11 May 2018 21:23:48 -0700 dispatch: minor code refactor
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 11 May 2018 21:23:48 -0700] rev 37994
dispatch: minor code refactor This hopefully makes things slightly easier to read. Differential Revision: https://phab.mercurial-scm.org/D3537
Wed, 04 Apr 2018 21:17:55 +0900 hgweb: drop unused argument 'tmpl' from webutil.compare()
Yuya Nishihara <yuya@tcha.org> [Wed, 04 Apr 2018 21:17:55 +0900] rev 37993
hgweb: drop unused argument 'tmpl' from webutil.compare()
Wed, 04 Apr 2018 21:17:10 +0900 hgweb: convert {comparison} to a mappinggenerator with named template
Yuya Nishihara <yuya@tcha.org> [Wed, 04 Apr 2018 21:17:10 +0900] rev 37992
hgweb: convert {comparison} to a mappinggenerator with named template No bare generator.
Wed, 04 Apr 2018 21:14:30 +0900 hgweb: rename 'context' argument of webutil.compare() to avoid name conflicts
Yuya Nishihara <yuya@tcha.org> [Wed, 04 Apr 2018 21:14:30 +0900] rev 37991
hgweb: rename 'context' argument of webutil.compare() to avoid name conflicts The meaning of 'context' depends on context. Here it is the number of the context lines in unified diff.
Wed, 04 Apr 2018 00:08:10 +0900 hgweb: convert comparison {lines} to a mappinggenerator with named template
Yuya Nishihara <yuya@tcha.org> [Wed, 04 Apr 2018 00:08:10 +0900] rev 37990
hgweb: convert comparison {lines} to a mappinggenerator with named template Bare generator can't be restarted.
Tue, 03 Apr 2018 23:57:00 +0900 hgweb: move getblock() closure out of compare()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:57:00 +0900] rev 37989
hgweb: move getblock() closure out of compare() (Please use 'hg diff -w' to get readable diff from this patch.)
Tue, 03 Apr 2018 23:54:08 +0900 hgweb: move compline() closure out of compare()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:54:08 +0900] rev 37988
hgweb: move compline() closure out of compare()
Tue, 03 Apr 2018 23:50:00 +0900 hgweb: convert {diff} to a mappinggenerator with named template
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:50:00 +0900] rev 37987
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.
Tue, 03 Apr 2018 23:43:41 +0900 hgweb: use template context to render {lines} of {diff}
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:43:41 +0900] rev 37986
hgweb: use template context to render {lines} of {diff} This is a preferred way to process nested templates.
Tue, 03 Apr 2018 23:42:15 +0900 hgweb: wrap {lines} of {diff} with mappedgenerator
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:42:15 +0900] rev 37985
hgweb: wrap {lines} of {diff} with mappedgenerator This can't be a mappinggenerator as it switches the templates conditionally.
Tue, 03 Apr 2018 23:38:19 +0900 hgweb: move prettyprintlines() closure out of diffs()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:38:19 +0900] rev 37984
hgweb: move prettyprintlines() closure out of diffs() This will be wrapped with mappedgenerator.
Sun, 29 Apr 2018 22:27:05 +0530 remotenames: enable the storage config option if extension is enabled
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 29 Apr 2018 22:27:05 +0530] rev 37983
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
Sun, 29 Apr 2018 22:42:54 +0530 tests: clone the repo over ssh in tests/test-logexchange.t
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 29 Apr 2018 22:42:54 +0530] rev 37982
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
Sun, 29 Apr 2018 22:39:45 +0530 remotenames: check the remotepath with url containing user information too
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 29 Apr 2018 22:39:45 +0530] rev 37981
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
Sat, 12 May 2018 22:29:28 +0200 bdiff: fix yet more fallout from xdiff long/int64 conversion (issue5885) stable
Julien Cristau <jcristau@debian.org> [Sat, 12 May 2018 22:29:28 +0200] rev 37980
bdiff: fix yet more fallout from xdiff long/int64 conversion (issue5885) "l" in Py_BuildValue's format string means long, so passing int64_t instead results in fireworks on 32bit architectures. Differential Revision: https://phab.mercurial-scm.org/D3538
Fri, 11 May 2018 09:16:26 -0700 shortest: avoid magic number "41"
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 May 2018 09:16:26 -0700] rev 37979
shortest: avoid magic number "41" As suggested by Yuya. Feel free to fold into D3502. Differential Revision: https://phab.mercurial-scm.org/D3531
Fri, 11 May 2018 07:31:51 -0700 revlog: handle error from node lookup
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 May 2018 07:31:51 -0700] rev 37978
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
Fri, 11 May 2018 22:07:43 -0400 debugextensions: process extensions loaded from the local repository too
Matt Harbison <matt_harbison@yahoo.com> [Fri, 11 May 2018 22:07:43 -0400] rev 37977
debugextensions: process extensions loaded from the local repository too
Thu, 10 May 2018 22:13:13 -0400 phabricator: drop support for the deprecated `phabricator.token` config
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 22:13:13 -0400] rev 37976
phabricator: drop support for the deprecated `phabricator.token` config
Thu, 03 May 2018 18:22:02 +0900 help: load module doc of disabled extension in extensions.disabledcmd()
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 18:22:02 +0900] rev 37975
help: load module doc of disabled extension in extensions.disabledcmd() This helps rewriting _finddisablecmd() to not load the module.
Thu, 03 May 2018 18:15:43 +0900 extensions: extract closure that looks for commands from disabled module
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 18:15:43 +0900] rev 37974
extensions: extract closure that looks for commands from disabled module I'll rewrite this function to not load disabled extensions.
Thu, 03 May 2018 18:13:43 +0900 extensions: drop dead code trying to exclude deprecated disabled commands
Yuya Nishihara <yuya@tcha.org> [Thu, 03 May 2018 18:13:43 +0900] rev 37973
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)
Fri, 11 May 2018 21:53:26 +0900 util: drop remainder of dateutil/procutil aliases (API)
Yuya Nishihara <yuya@tcha.org> [Fri, 11 May 2018 21:53:26 +0900] rev 37972
util: drop remainder of dateutil/procutil aliases (API)
Thu, 03 May 2018 15:57:12 -0700 shortest: move revnum-disambiguation out of revlog
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 15:57:12 -0700] rev 37971
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
Thu, 03 May 2018 15:25:16 -0700 shortest: remove unnecessary check for revnum in isvalid()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 15:25:16 -0700] rev 37970
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
Thu, 03 May 2018 15:01:33 -0700 shortest: make pure code also disambigute against revnums at end
Martin von Zweigbergk <martinvonz@google.com> [Thu, 03 May 2018 15:01:33 -0700] rev 37969
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
Wed, 02 May 2018 23:17:58 -0700 revlog: use node tree (native code) for shortest() calculation
Martin von Zweigbergk <martinvonz@google.com> [Wed, 02 May 2018 23:17:58 -0700] rev 37968
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
Mon, 07 May 2018 16:49:31 -0700 shelve: reduce scope of merge tool config override
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 May 2018 16:49:31 -0700] rev 37967
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
Thu, 10 May 2018 21:43:32 -0400 util: drop _deprecatedfunc()
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:43:32 -0400] rev 37966
util: drop _deprecatedfunc() It was only needed for the previously removed forwarding.
Thu, 10 May 2018 21:41:19 -0400 util: drop deprecated forwarding to procutil (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:41:19 -0400] rev 37965
util: drop deprecated forwarding to procutil (API)
Fri, 11 May 2018 00:58:51 -0400 tests: migrate demandimport.py away from deprecated `util` module symbols
Matt Harbison <matt_harbison@yahoo.com> [Fri, 11 May 2018 00:58:51 -0400] rev 37964
tests: migrate demandimport.py away from deprecated `util` module symbols
Thu, 10 May 2018 22:00:41 -0400 templatekw: drop deprecated showlist() and showdict() (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 22:00:41 -0400] rev 37963
templatekw: drop deprecated showlist() and showdict() (API)
Thu, 10 May 2018 21:37:23 -0400 util: drop deprecated forwarding to dateutil (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:37:23 -0400] rev 37962
util: drop deprecated forwarding to dateutil (API)
Thu, 10 May 2018 21:34:40 -0400 util: drop deprecated forwarding to stringutil (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:34:40 -0400] rev 37961
util: drop deprecated forwarding to stringutil (API)
Fri, 11 May 2018 00:55:01 -0400 scmutil: remove deprecated revpairnodes method (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:55:01 -0400] rev 37960
scmutil: remove deprecated revpairnodes method (API)
Fri, 11 May 2018 00:54:37 -0400 merge: drop support for using updateresults as tuples (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:54:37 -0400] rev 37959
merge: drop support for using updateresults as tuples (API)
Fri, 11 May 2018 00:54:12 -0400 cmdutil: drop deprecated log helper methods (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:54:12 -0400] rev 37958
cmdutil: drop deprecated log helper methods (API)
Thu, 10 May 2018 21:53:48 -0400 cmdutil: drop deprecated precursor of registrar.command (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 10 May 2018 21:53:48 -0400] rev 37957
cmdutil: drop deprecated precursor of registrar.command (API)
Fri, 11 May 2018 00:53:29 -0400 cmdutil: remove deprecated _revertprefetch code (API)
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:53:29 -0400] rev 37956
cmdutil: remove deprecated _revertprefetch code (API)
Fri, 11 May 2018 00:50:21 -0400 tests: fix deprecation warning in test-url.py
Augie Fackler <augie@google.com> [Fri, 11 May 2018 00:50:21 -0400] rev 37955
tests: fix deprecation warning in test-url.py
Tue, 03 Apr 2018 23:34:55 +0900 hgweb: remove unused argument 'tmpl' from listfilediffs()
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Apr 2018 23:34:55 +0900] rev 37954
hgweb: remove unused argument 'tmpl' from listfilediffs()
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 37953
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 37952
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 37951
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 37950
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 37949
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 37948
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 37947
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 37946
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 37945
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 37944
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 37943
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 37942
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 37941
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 37940
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 37939
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 37938
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 37937
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 37936
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 37935
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 37934
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 37933
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 37932
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 37931
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 37930
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 37929
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 37928
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 37927
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 37926
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 37925
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 37924
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 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
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 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
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 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
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 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
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 37919
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 37918
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 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
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 37916
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 37915
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 37914
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 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.
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 37912
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 37911
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 37910
hgweb: drop useless **args from webutil.showtag() and showbookmark() Callers never pass excessive arguments to these functions.
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip