Thu, 02 Feb 2017 14:19:48 +0100 bundle2: implement a basic __repr__ for bundle2 part
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 14:19:48 +0100] rev 30872
bundle2: implement a basic __repr__ for bundle2 part We display basic data as the part id and part type. This make debugging bundle2 related code friendlier.
Thu, 02 Feb 2017 11:03:41 +0100 bundle2: drop an outdated comment
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 11:03:41 +0100] rev 30871
bundle2: drop an outdated comment The function is no longer in "early" stage and have been used in production for years. We can probably drop that part of the docstring...
Thu, 02 Feb 2017 10:53:55 +0100 unbundle: swap conditional branches for clarity
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 10:53:55 +0100] rev 30870
unbundle: swap conditional branches for clarity This is a small style update for clarity. The previous situation was: if foo: 50 lines else: 2 lines In such case I tend to invert these to get the simpler branch out of the way earlier: if not foo: 2 lines else: 50 lines This makes the conditional and various alternatives fit on the same screen, simpler to read overall.
Thu, 02 Feb 2017 10:55:38 +0100 unbundle: add a small comment to tag the bundle1 case as such
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 10:55:38 +0100] rev 30869
unbundle: add a small comment to tag the bundle1 case as such This makes the code clearer to understand for someone new to it (or rusted)
Thu, 02 Feb 2017 10:51:04 +0100 unbundle: add a small comment to clarify the 'check_heads' call
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 10:51:04 +0100] rev 30868
unbundle: add a small comment to clarify the 'check_heads' call Bundle2 has its own mechanisms to check for heads (and other) changes, so push using bundle2 is relying on the "check:heads" bundle part of unbundle and the 'check_heads' call is not checking anything. We add a small comment to make this clearer.
Thu, 02 Feb 2017 11:17:36 -0800 pager: don't terminate with extreme prejudice on SIGPIPE (BC)
Simon Farnsworth <simonfar@fb.com> [Thu, 02 Feb 2017 11:17:36 -0800] rev 30867
pager: don't terminate with extreme prejudice on SIGPIPE (BC) The default SIGPIPE handler causes Mercurial to exit immediately, without running any Python cleanup code (except and finally blocks, atexit handlers etc). This creates problems if you want to do something at exit. If we need a different exit code for broken pipe from pager, then we should code that ourselves in Python; this appears to have been cargo-culted from the fork implementation of pager that's no longer used, where it was needed to stop Broken Pipe errors appearing on the user's terminal.
Mon, 23 Jan 2017 10:48:55 -0800 verify: replace _validpath() by matcher
Martin von Zweigbergk <martinvonz@google.com> [Mon, 23 Jan 2017 10:48:55 -0800] rev 30866
verify: replace _validpath() by matcher The verifier calls out to _validpath() to check if it should verify that path and the narrowhg extension overrides _validpath() to tell the verifier to skip that path. In treemanifest repos, the verifier calls the same method to check if it should visit a directory. However, the decision to visit a directory is different from the condition that it's a matching path, and narrowhg was working around it by returning True from its _validpath() override if *either* was true. Similar to how one can do "hg files -I foo/bar/ -X foo/" (making the include pointless), narrowhg can be configured to track the same paths. In that case match("foo/bar/baz") would be false, but match.visitdir("foo/bar/baz") turns out to be true, causing verify to fail. This may seem like a bug in visitdir(), but it's explicitly documented to be undefined for subdirectories of excluded directories. When using treemanifests, the walk would not descend into foo/, so verification would pass. However, when using flat manifests, there is no recursive directory walk and the file path "foo/bar/baz" would be passed to _validpath() without "foo/" (actually without the slash) being passed first. As explained above, _validpath() would return true for the file path and "hg verify" would fail. Replacing the _validpath() method by a matcher seems like the obvious fix. Narrowhg can then pass in its own matcher and not have to conflate the two matching functions (for dirs and files). I think it also makes the code clearer.
Wed, 01 Feb 2017 08:47:27 -0800 rebase: fix code comment to refer to right issue (4504, not 4505)
Martin von Zweigbergk <martinvonz@google.com> [Wed, 01 Feb 2017 08:47:27 -0800] rev 30865
rebase: fix code comment to refer to right issue (4504, not 4505) The comment was introduced in 8a544fb645bb (rebase: ensure rebase revision remains visible (issue4504), 2015-01-27), which mentions the right issue in the description.
Wed, 01 Feb 2017 11:30:26 -0600 merge with stable
Kevin Bullock <kbullock+mercurial@ringworld.org> [Wed, 01 Feb 2017 11:30:26 -0600] rev 30864
merge with stable
Wed, 01 Feb 2017 10:19:49 -0600 Added signature for changeset e1526da1e6d8 stable
Kevin Bullock <kbullock@ringworld.org> [Wed, 01 Feb 2017 10:19:49 -0600] rev 30863
Added signature for changeset e1526da1e6d8
Wed, 01 Feb 2017 10:18:59 -0600 Added tag 4.1 for changeset e1526da1e6d8 stable
Kevin Bullock <kbullock@ringworld.org> [Wed, 01 Feb 2017 10:18:59 -0600] rev 30862
Added tag 4.1 for changeset e1526da1e6d8
Wed, 01 Feb 2017 10:15:10 -0600 merge with i18n stable 4.1
Kevin Bullock <kbullock+mercurial@ringworld.org> [Wed, 01 Feb 2017 10:15:10 -0600] rev 30861
merge with i18n
Wed, 01 Feb 2017 08:47:11 -0200 i18n-pt_BR: synchronized with dfc6663f97ca stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 01 Feb 2017 08:47:11 -0200] rev 30860
i18n-pt_BR: synchronized with dfc6663f97ca
Wed, 01 Feb 2017 02:10:30 +0100 merge: more safe detection of criss cross merge conflict between dm and r stable
Mads Kiilerich <mads@kiilerich.com> [Wed, 01 Feb 2017 02:10:30 +0100] rev 30859
merge: more safe detection of criss cross merge conflict between dm and r 41f6af50c0d8 introduced handling of a crash in this case. A review comment suggested that it was not entirely obvious that a 'dm' always would have a 'r' for the source file. To mitigate that risk, make the code more conservative and make less assumptions.
Mon, 30 Jan 2017 18:03:17 -0500 tests: correct (I think) command in test-largefiles-update stable
Augie Fackler <augie@google.com> [Mon, 30 Jan 2017 18:03:17 -0500] rev 30858
tests: correct (I think) command in test-largefiles-update When this test was introduced, it used the short-form of all the flags on this update invocation. I suspect, based on the "start with clean dirstates" comment and the fact that the no-exec branch of the #if guard leaves dirstate clean, that this should have been 'update -qCr' instead of 'update -qcr', but that a bug in largefiles --check handling left this problem unnoticed. I'll leave a breadcrumb further up about the current failure mode in the hopes that we can fix this some day. This was previously discussed in [0] but the trail in that thread goes cold after a few replies. Given that this is still a flaky test, that appears to only be passing by bad fortune, I think it's worth correcting the code of the test to make a correct assertion, and to keep track of the suspected bug with some other mechanism than an invalid test (if we had support for "expected failure" blocks this might be a worthwhile use of them?). 0: https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-October/089501.html
Mon, 30 Jan 2017 17:57:21 -0500 tests: expand flags to long form in test-largefiles-update.t stable
Augie Fackler <augie@google.com> [Mon, 30 Jan 2017 17:57:21 -0500] rev 30857
tests: expand flags to long form in test-largefiles-update.t I spent some time confused by this test. I'm pretty sure that this line intends to be cleaning the dirstate, not checking that it's clean before updating: the preceding #if block leaves the dirstate clean in the noexec case, and dirty in the exec case, so we can't expect consistent behavior across that platform variation. A subsequent patch will modify this command to use --clean instead of --check. I'll elaborate in that patch about the hypothetical bug here.
Tue, 31 Jan 2017 03:25:59 +0100 merge: fix crash on criss cross merge with dir move and delete (issue5020) stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 31 Jan 2017 03:25:59 +0100] rev 30856
merge: fix crash on criss cross merge with dir move and delete (issue5020) Work around that 'dm' in the data model only can have one operation for the target file, but still can have multiple and conflicting operations on the source file where the other operation is a 'rm'. The move would thus fail with 'abort: No such file or directory'. In this case it is "obvious" that the file should be removed, either before or after moving it. We thus keep the 'rm' of the source file but drop the 'dm'. This is not a pretty fix but quite "obviously" safe (famous last words...) as it only touches a rare code path that used to crash. It is possible that it would be better to swap the files for 'dm' as suggested on https://bz.mercurial-scm.org/show_bug.cgi?id=5020#c13 but it is not entirely obvious that it not just would create conflicts on the other file. That can be revisited later.
Tue, 31 Jan 2017 03:20:07 +0100 tests: use 'f' in test-merge-criss-cross.t to prepare for recursive dumping stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 31 Jan 2017 03:20:07 +0100] rev 30855
tests: use 'f' in test-merge-criss-cross.t to prepare for recursive dumping Prepare for adding a test case with files in a directory.
Mon, 30 Jan 2017 22:58:56 -0800 util: make sortdict.keys() return a copy stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 30 Jan 2017 22:58:56 -0800] rev 30854
util: make sortdict.keys() return a copy dict.keys() is documented to return a copy, so it's surprising that sortdict.keys() did not. I noticed this because we have an extension that calls readlocaltags(). That method tries to remove any tags that point to non-existent revisions (most likely stripped). However, since it's unintentionally working on the instance it's modifying, it sometimes fails to remove tags when there are multiple bad tags in a row. This was not caught because localrepo.tags() does an additional layer of filtering. sortdict is also used in other places, but I have not checked whether its keys() and/or __delitem__() methods are used there.
Mon, 30 Jan 2017 22:50:20 +0900 test-highlight: add normalization rule for Pygments 2.2 stable
Yuya Nishihara <yuya@tcha.org> [Mon, 30 Jan 2017 22:50:20 +0900] rev 30853
test-highlight: add normalization rule for Pygments 2.2 The test failed on Debian sid because of new class="vm".
Sun, 29 Jan 2017 12:40:56 -0800 tests: account for different newline behavior between Solaris and GNU grep stable
Danek Duvall <danek.duvall@oracle.com> [Sun, 29 Jan 2017 12:40:56 -0800] rev 30852
tests: account for different newline behavior between Solaris and GNU grep GNU grep, when emitting a matching line that doesn't have a terminating newline, will add an extra newline. Solaris grep passes the original line through without the newline. This causes differences in test output when looking at the last line of the output of get-with-headers.py, which doesn't usually emit (and certainly doesn't guarantee) a terminating newline. Both grep implementations succeed in matching the requested pattern, though, so rely on specifying the full pattern on grep's commandline instead of expecting it in the output, and send the output to /dev/null.
Fri, 20 Jan 2017 10:17:34 -0500 tests: also allow "Protocol not supported" in test-http-proxy error stable
Augie Fackler <augie@google.com> [Fri, 20 Jan 2017 10:17:34 -0500] rev 30851
tests: also allow "Protocol not supported" in test-http-proxy error I've seen this in a (misconfigured) FreeBSD jail which has ::1 as an entry for localhost, but IPv6 support is disabled in the jail. It took me months to figure out what was going on (and I only figured it out when tinyproxy.py got confused by similar IPv4-level misconfiguration of the localhost domain in /etc/hosts.) I don't feel strongly about this patch: on the one hand, it's papering over a host-level misconfiguration, but on the other it avoids some weird and hard to diagnose problems that can occur in weirdly restricted environments.
Fri, 20 Jan 2017 21:33:18 +0900 revset: prevent using outgoing() and remote() in hgweb session (BC) stable
Yuya Nishihara <yuya@tcha.org> [Fri, 20 Jan 2017 21:33:18 +0900] rev 30850
revset: prevent using outgoing() and remote() in hgweb session (BC) outgoing() and remote() may stall for long due to network I/O, which seems unsafe per definition, "whether a predicate is safe for DoS attack." But I'm not 100% sure about this. If our concern isn't elapsed time but CPU resource, these predicates are considered safe. Perhaps that would be up to the web/application server configuration? Anyway, outgoing() and remote() wouldn't be useful in hgweb, so I think it's okay to ban them.
Thu, 19 Jan 2017 16:23:49 -0500 tests: use an absolute path to get around '..' being invalid on a dead CWD stable
Augie Fackler <augie@google.com> [Thu, 19 Jan 2017 16:23:49 -0500] rev 30849
tests: use an absolute path to get around '..' being invalid on a dead CWD Only FreeBSD seems to be this picky. Note that this explicit absolute-path `cd` exposes a defect in the test, in that we end up still inside the cwd-vanish repository, but that's not a regression in this change. Since we're in a code freeze, I'm doing the smallest thing possible to try and fix bugs on FreeBSD, rather than cleaning up the entire problem. I'll follow up with a more complete fix after the freeze.
Wed, 18 Jan 2017 18:25:51 -0800 ui: rename tmpdir parameter to more specific repopath stable
Sean Farley <sean@farley.io> [Wed, 18 Jan 2017 18:25:51 -0800] rev 30848
ui: rename tmpdir parameter to more specific repopath This was requested by Augie and I agree that repopath is more descriptive.
Thu, 19 Jan 2017 23:01:32 +0900 pager: wrap _runcommand() no matter if stdout is redirected stable
Yuya Nishihara <yuya@tcha.org> [Thu, 19 Jan 2017 23:01:32 +0900] rev 30847
pager: wrap _runcommand() no matter if stdout is redirected We've made chg utilize the common code path implemented in pager.py (by 815e1cefd082 and 493935e0327a), but the chg server does not always start with a tty. Because of this, uisetup() of the pager extension could be skipped on the chg server. Kudos given to Sean Farley for dogfooding new chg and spotting this problem.
Thu, 19 Jan 2017 09:48:40 -0800 shelve: make unshelve not crash when there are missing files (issue4176) stable
Kostia Balytskyi <ikostia@fb.com> [Thu, 19 Jan 2017 09:48:40 -0800] rev 30846
shelve: make unshelve not crash when there are missing files (issue4176) This patch makes it possible to unshelve while having missing files in your repo as long as shelved changes don't touch those missing files. It also makes error message better otherwise.
Wed, 18 Jan 2017 22:45:07 -0800 statprof: require input file stable
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 18 Jan 2017 22:45:07 -0800] rev 30845
statprof: require input file statprof has a __main__ handler that allows viewing of previously written data files. As Yuya pointed out during review, f42cd5434cc2 broke this. This patch fixes that.
Wed, 18 Jan 2017 23:43:41 -0500 tests: work around FreeBSD's unzip having slightly different output stable
Augie Fackler <augie@google.com> [Wed, 18 Jan 2017 23:43:41 -0500] rev 30844
tests: work around FreeBSD's unzip having slightly different output According to man 1 unzip, this unzip appeared in FreeBSD 8.0. It's what comes as /usr/bin/unzip, so we may as well cater to it since it's easy.
Wed, 18 Jan 2017 23:34:35 -0500 contrib: fix check-commit to not reject commits from `hg sign` and `hg tag` stable
Augie Fackler <augie@google.com> [Wed, 18 Jan 2017 23:34:35 -0500] rev 30843
contrib: fix check-commit to not reject commits from `hg sign` and `hg tag` I'm tired of having a spurious red build every time we do a release. Fix it once and for all.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip