Tue, 12 Feb 2019 14:29:56 -0800 py3: port tinyproxy.py to work with Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 12 Feb 2019 14:29:56 -0800] rev 41709
py3: port tinyproxy.py to work with Python 3 There were various str/bytes mismatches in the code. This caused the proxy server to misbehave at run-time. The manifestation was typically premature socket disconnect from the perspective of the client. Differential Revision: https://phab.mercurial-scm.org/D5951
Tue, 12 Feb 2019 12:13:56 -0800 url: always access req._tunnel_host
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 12 Feb 2019 12:13:56 -0800] rev 41708
url: always access req._tunnel_host The getattr() was there to handle Python versions before 2.6, which lacked this attribute. We /might/ be able to further delete some code here. However, the behavior here is extremely hard to follow because large parts of this code duplicate code from the Python standard library and it is difficult to understand what is actually needed. Differential Revision: https://phab.mercurial-scm.org/D5950
Fri, 15 Feb 2019 13:07:07 -0800 tests: double escape \ in test-import-eol.t and test-mq-eol.t
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Feb 2019 13:07:07 -0800] rev 41707
tests: double escape \ in test-import-eol.t and test-mq-eol.t The shell eats the \\. Differential Revision: https://phab.mercurial-scm.org/D5974
Fri, 15 Feb 2019 13:05:01 -0800 tests: use raw string in test-impexp-branch.t
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Feb 2019 13:05:01 -0800] rev 41706
tests: use raw string in test-impexp-branch.t On first glance, the escaping of \s seems correct. However, the shell eats the escape and we're left with '\s` in the written file. Let's use a raw string so we don't have to double escape. Differential Revision: https://phab.mercurial-scm.org/D5973
Mon, 11 Feb 2019 16:27:20 +0100 phabricator: make user searches case-insensitive
Julien Cristau <jcristau@mozilla.com> [Mon, 11 Feb 2019 16:27:20 +0100] rev 41705
phabricator: make user searches case-insensitive User names in conduit are case insensitive, but when looking for "FOO" it would return "foo" instead and we'd think the user didn't exist. So lower case both the query and the response when comparing them. Differential Revision: https://phab.mercurial-scm.org/D5934
Fri, 15 Feb 2019 11:31:17 -0800 exchange: raise error.Abort instead of ValueError
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Feb 2019 11:31:17 -0800] rev 41704
exchange: raise error.Abort instead of ValueError Raising ValueError results in an uncaught exception and a traceback being printed. In the context of servers, it can result in an HTTP 500 and an exception being logged in the error log. I don't think this is proper behavior. The bundle2 code paths have a mechanism for translating an error.Abort into an error message reported to the clients. I think we should use that instead. This commit replaces some ValueError with Abort so that servers can error more gracefully. Differential Revision: https://phab.mercurial-scm.org/D5972
Fri, 15 Feb 2019 11:42:54 -0800 tests: remove -q from test-lfs-serve.t
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Feb 2019 11:42:54 -0800] rev 41703
tests: remove -q from test-lfs-serve.t This will make it easier to observe a behavior change in the next commit. Differential Revision: https://phab.mercurial-scm.org/D5971
Wed, 13 Feb 2019 16:58:24 -0500 chistedit: use magenta for current line as in crecord (issue6071)
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 13 Feb 2019 16:58:24 -0500] rev 41702
chistedit: use magenta for current line as in crecord (issue6071) It was inconsistent in the UI to have different way to show the current line.
Thu, 14 Feb 2019 20:57:26 +0530 chistedit: improve proper username in histedit curses interface
Akshit Jain <Akshjain.jain74@gmail.com> [Thu, 14 Feb 2019 20:57:26 +0530] rev 41701
chistedit: improve proper username in histedit curses interface in changeset section (issue6072) Differential Revision: https://phab.mercurial-scm.org/D5967
Thu, 14 Feb 2019 10:41:47 -0500 crecord: remove obsolete version check
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 14 Feb 2019 10:41:47 -0500] rev 41700
crecord: remove obsolete version check An internal function shouldn't be checking compatibility with Mercurial versions.
Wed, 13 Feb 2019 16:02:44 -0500 histedit: remove "chistedit" mention from interface
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 13 Feb 2019 16:02:44 -0500] rev 41699
histedit: remove "chistedit" mention from interface "chisted" is internal jargon. The end user should not need to be aware that it's different from histedit.
Wed, 13 Feb 2019 18:17:42 +0530 revset: improve documentation on expectsize()
Navaneeth Suresh <navaneeths1998@gmail.com> [Wed, 13 Feb 2019 18:17:42 +0530] rev 41698
revset: improve documentation on expectsize() This is a follow-up patch to D5813. It improves the documentation of `expectsize(set, size)`. Differential Revision: https://phab.mercurial-scm.org/D5953
Wed, 13 Feb 2019 12:09:36 -0800 scmutil: fix a comment that doesn't match the code
Martin von Zweigbergk <martinvonz@google.com> [Wed, 13 Feb 2019 12:09:36 -0800] rev 41697
scmutil: fix a comment that doesn't match the code Differential Revision: https://phab.mercurial-scm.org/D5956
Thu, 14 Feb 2019 13:16:36 -0800 remotefilelog: remove strkwargs()
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Feb 2019 13:16:36 -0800] rev 41696
remotefilelog: remove strkwargs() The previous commit activated previously unused code paths on Python 3 and revealed that we were calling strkwargs() on a dict that already had str keys. The only caller of _forceprefetch() is _adjustlinknode() a few lines up and the static commonlogkwargs dict features str keys. Differential Revision: https://phab.mercurial-scm.org/D5958
Wed, 13 Feb 2019 16:31:20 -0800 remotefilelog: use raw strings when looking for variable names
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 13 Feb 2019 16:31:20 -0800] rev 41695
remotefilelog: use raw strings when looking for variable names Keys in self.__dict__ and vars() are always str. So we need to use raw strings to ensure lookups work on Python 3. # skip-blame just r'' prefixes Differential Revision: https://phab.mercurial-scm.org/D5957
Thu, 10 Jan 2019 18:25:18 +0100 rust-cpython: binding for headrevs()
Georges Racinet <georges.racinet@octobus.net> [Thu, 10 Jan 2019 18:25:18 +0100] rev 41694
rust-cpython: binding for headrevs() This uses the core `dagops::retain_heads` to give a Rust implementation to `mercurial.dagop.headrevs`. Testing happens for now from `test-rust-ancestors.py` (for quick and minimal change), but it'd made more sense to put the binary index data elsewhere and to create a new test python module
Wed, 16 Jan 2019 16:05:27 +0100 rust-cpython: moved py_set() utility to conversion module
Georges Racinet <georges.racinet@octobus.net> [Wed, 16 Jan 2019 16:05:27 +0100] rev 41693
rust-cpython: moved py_set() utility to conversion module We're still hoping to get rid of it eventually, but we're going to need it from outside the `ancestors` module before that.
Sun, 02 Dec 2018 16:19:22 +0100 rust: translated random test of missingancestors
Georges Racinet <gracinet@anybox.fr> [Sun, 02 Dec 2018 16:19:22 +0100] rev 41692
rust: translated random test of missingancestors This is a Rust implementation of the random DAG generator and related incrementalmissingancestors tests against a naive brute force implementation. It is provided as an integration test, so that it won't run by default if any unit test fails. In case of a failed example, all needed information for reproduction is included in the panic message, (this is how `test_remove_ancestors_from_case1()` has been generated), as well as the random seed. The whole test is rerunnable by passing the random seed in the TEST_RANDOM_SEED environment variable. The other parameters (numbers of iterations) can be passed in the TEST_MISSING_ANCESTORS environment variable. An alternative would have been to expose to Python MissingAncestors<VecGraphs> but that would have meant pollution of the release build used from Python, whereas we do it in this changeset within the tests submodule Differential Revision: https://phab.mercurial-scm.org/D5417
Tue, 12 Feb 2019 13:46:38 -0800 debugpathcopies: fix typo in synopsis
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Feb 2019 13:46:38 -0800] rev 41691
debugpathcopies: fix typo in synopsis Differential Revision: https://phab.mercurial-scm.org/D5949
Tue, 12 Feb 2019 13:42:42 -0800 debugrename: don't require at least one path
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Feb 2019 13:42:42 -0800] rev 41690
debugrename: don't require at least one path I don't see a reason that it needs to require a path. Most commands match everything when no paths are given, but here you have to do something like `hg debugrename -r . .` (from the repo root) to match everything. Differential Revision: https://phab.mercurial-scm.org/D5948
Tue, 12 Feb 2019 11:27:27 -0800 revlog: use iterbytestr()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 12 Feb 2019 11:27:27 -0800] rev 41689
revlog: use iterbytestr() Otherwise we iterate over integers in Python 3 and the character compare fails. Differential Revision: https://phab.mercurial-scm.org/D5947
Sun, 10 Feb 2019 22:41:51 -0800 commit: respect ui.relative-paths
Martin von Zweigbergk <martinvonz@google.com> [Sun, 10 Feb 2019 22:41:51 -0800] rev 41688
commit: respect ui.relative-paths The command usually doesn't print any paths, but there are some warnings and verbose messages that includes paths. Differential Revision: https://phab.mercurial-scm.org/D5939
Sun, 10 Feb 2019 22:21:45 -0800 resolve: slightly simplify join expression by joining with empty strings
Martin von Zweigbergk <martinvonz@google.com> [Sun, 10 Feb 2019 22:21:45 -0800] rev 41687
resolve: slightly simplify join expression by joining with empty strings Differential Revision: https://phab.mercurial-scm.org/D5938
Sun, 10 Feb 2019 22:18:19 -0800 resolve: respect ui.relative-paths also for warning messages
Martin von Zweigbergk <martinvonz@google.com> [Sun, 10 Feb 2019 22:18:19 -0800] rev 41686
resolve: respect ui.relative-paths also for warning messages I guess this should have been part of 72a9aacff645 (resolve: respect ui.relative-paths, 2019-01-29). Differential Revision: https://phab.mercurial-scm.org/D5937
Mon, 11 Feb 2019 09:40:24 -0800 addremove: respect ui.relative-paths
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Feb 2019 09:40:24 -0800] rev 41685
addremove: respect ui.relative-paths I previously changed these code paths while trying to not change any behavior to avoid inconsistencies between them in the intermediate commits. They're now all ready to be switched over to respecting ui.relative-paths. Differential Revision: https://phab.mercurial-scm.org/D5936
Mon, 11 Feb 2019 09:12:23 -0800 windows: use util.localpath for repo-relative paths in getuipathfn()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Feb 2019 09:12:23 -0800] rev 41684
windows: use util.localpath for repo-relative paths in getuipathfn() Now that we have a single place that translates from internal path representation (slash-separated) to UI representation (i.e. scmutil.getuipathfn()), let's switch that over to using util.localpath for absolute paths. I don't expect any test impact on Windows because we still respect ui.slash, which is set by the test runner. As Yuya pointed out, a997163e7fae (status: extract helper for producing relative or absolute path for UI, 2019-01-29) accidentally changed to slash-separated paths on Windows because it used used to use repo.pathto(f, cwd='') (which calls util.localpath()) and after that patch it just prints the filename without any transformation. This patch should fix that regression. Differential Revision: https://phab.mercurial-scm.org/D5935
Tue, 12 Feb 2019 17:10:31 -0500 walkchangerevs: obey allfiles parameter when taking the slow path
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 12 Feb 2019 17:10:31 -0500] rev 41683
walkchangerevs: obey allfiles parameter when taking the slow path When walkchangerevs sees that there's a pattern, it hits the slow path. The slow path in turn reverts to the old dumb grep behaviour of only looking at files changed at each revision. Therefore, a command such as hg grep -l --all-files '.*' 'glob:**' would show you all the nonempty files touched by the current revision. This modifies that behaviour to look at the manifest at each revision instead of the changed files in case that --all-files was requested.
Fri, 08 Feb 2019 18:26:35 +0100 test: stabilize test-wireproto-exchangev2.t flaky output
Boris Feld <boris.feld@octobus.net> [Fri, 08 Feb 2019 18:26:35 +0100] rev 41682
test: stabilize test-wireproto-exchangev2.t flaky output When running the test suite with multiple processes, we often get flaky outputs, like here: https://ci.octobus.net/job/MercurialPy2/267/console ``` - received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) add changeset cd2534766bec add changeset e96ae20f4188 add changeset caa2a465451d + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) ``` Instead of simply sorting the clone and pull output, I saved the output in a separate file and checked the `received frame` messages on one side and then the rest of the output on the other side. This way we conserve the order of messages as it seems important. Differential Revision: https://phab.mercurial-scm.org/D5897
Mon, 04 Feb 2019 14:29:03 -0800 zsh: fix `hg resolve` completion when in a subdirectory (issue6067)
Kyle Lippincott <spectral@google.com> [Mon, 04 Feb 2019 14:29:03 -0800] rev 41681
zsh: fix `hg resolve` completion when in a subdirectory (issue6067) Differential Revision: https://phab.mercurial-scm.org/D5836
Sun, 03 Feb 2019 19:10:39 +0530 revset: add expectsize to check the size of a set
Navaneeth Suresh <navaneeths1998@gmail.com> [Sun, 03 Feb 2019 19:10:39 +0530] rev 41680
revset: add expectsize to check the size of a set `expectsize(<set>, <int>)` revset fails if `<set>` is not exactly `<int>` elements. `expectsize(<set>, <min>:<max>)` revset fails if `<set>` is not exactly between `<min>` and `<max>` inclusive. This then allows an alias for `hg next` to be `update -r one(children(.))` with sane failure behavior, and also makes some other scripting tasks a little less difficult. (Summary from WeShouldDoThat) Differential Revision: https://phab.mercurial-scm.org/D5813
Mon, 11 Feb 2019 11:18:37 -0500 merge with stable
Augie Fackler <augie@google.com> [Mon, 11 Feb 2019 11:18:37 -0500] rev 41679
merge with stable
Mon, 11 Feb 2019 15:41:08 +0300 branchmap: decode a label only once
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 11 Feb 2019 15:41:08 +0300] rev 41678
branchmap: decode a label only once This moves decoding of a label out of for loop. Minor speed up expected in cases when one branch has multiple heads. For example: someone using bookmarks as branches and hence ending up with multiple heads on default branch. Differential Revision: https://phab.mercurial-scm.org/D5932
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip