Tue, 25 Apr 2017 00:19:03 -0700 tests: demonstrate that pager.attend-<abbreviated> doesn't work stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 25 Apr 2017 00:19:03 -0700] rev 32074
tests: demonstrate that pager.attend-<abbreviated> doesn't work A pager.attend-* value that isn't a full command or alias name doesn't work. We add explicit test coverage of this to demonstrate it.
Mon, 24 Apr 2017 23:11:44 -0700 tests: test that abbreviated command alias is also paged stable
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 24 Apr 2017 23:11:44 -0700] rev 32073
tests: test that abbreviated command alias is also paged Explicit test coverage is good.
Mon, 24 Apr 2017 23:10:43 -0700 tests: drop unnecessary pager attend in test stable
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 24 Apr 2017 23:10:43 -0700] rev 32072
tests: drop unnecessary pager attend in test `log` is attended by default. We don't need to specify pager.attend-log in this test.
Mon, 24 Apr 2017 10:48:07 +0200 hgweb: change text of followlines links to "older / newer" stable
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 24 Apr 2017 10:48:07 +0200] rev 32071
hgweb: change text of followlines links to "older / newer" DAG directions "descending" / "ascending" arguably do not make much sense in the web interface where changes are usually listed by "dates".
Mon, 24 Apr 2017 10:32:15 +0200 hgweb: do not show "descending" link in followlines UI for filelog heads stable
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 24 Apr 2017 10:32:15 +0200] rev 32070
hgweb: do not show "descending" link in followlines UI for filelog heads When on a filelog head, we are certain that there will be no descendant so the target of the "descending" link will lead to an empty log result. Do not display the link in this case.
Mon, 24 Apr 2017 18:33:23 +0200 context: optimize linkrev adjustment in blockancestors() (issue5538) stable
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 24 Apr 2017 18:33:23 +0200] rev 32069
context: optimize linkrev adjustment in blockancestors() (issue5538) We set parent._descendantrev = child.rev() when walking parents in blockancestors() so that, when linkrev adjustment is perform for these, it starts from a close descendant instead of possibly topmost introrev. (See `self._adjustlinkrev(self._descendantrev)` in filectx._changeid().) This is similar to changeset c82d88dfaf59, which added a "f._changeid" instruction in annotate() for the same purpose. However, here, we set _descendantrev explicitly instead of relying on the '_changeid' cached property being accessed (with effect to set _changeid attribute) so that, in _parentfilectx() (called from parents()), we go through `if '_changeid' in vars(self) [...]` branch in which instruction `fctx._descendantrev = self.rev()` finally appears and does what we want. With this, we can roughly get a 3x speedup (including in example of issue5538 from mozilla-central repository) on usage of followlines revset (and equivalent hgweb request).
Mon, 24 Apr 2017 17:13:24 +0200 record: update help message to use operation instead of "record" (issue5432) stable
Boris Feld <boris.feld@octobus.net> [Mon, 24 Apr 2017 17:13:24 +0200] rev 32068
record: update help message to use operation instead of "record" (issue5432) Update the hunk selector help message to use the operation name instead of using "record" for all operations. Extract the help message in the same way as other single and multiple message line. Update tests to make sure that both "revert" and "discard" variants are tested.
Mon, 24 Apr 2017 14:38:30 -0400 tests: add lots of regex matching to test-http-bad-server.t stable
Augie Fackler <augie@google.com> [Mon, 24 Apr 2017 14:38:30 -0400] rev 32067
tests: add lots of regex matching to test-http-bad-server.t This makes the test pass in Python 2.6. It's all one of two problems: 1) abort: error: '' (2.7) vs abort: error: (2.6) 2) 65537 (2.7) vs -1 (2.6) With some...unfortunate escaping required due to how regular expressions work. Sigh.
Sun, 23 Apr 2017 09:38:10 -0400 tests: pass only one file at a time to tail(1) stable
Augie Fackler <augie@google.com> [Sun, 23 Apr 2017 09:38:10 -0400] rev 32066
tests: pass only one file at a time to tail(1) It looks like the verison on Solaris only tails one file at a time.
Sat, 22 Apr 2017 12:29:17 -0400 debian: configure editor and pager to sensible-\1 by default stable
Augie Fackler <augie@google.com> [Sat, 22 Apr 2017 12:29:17 -0400] rev 32065
debian: configure editor and pager to sensible-\1 by default Now that environment variables override system-wide hgrc settings, we can default Mercurial to sensible-editor and sensible-pager by default for debian users.
Sat, 22 Apr 2017 12:24:47 -0400 tests: work around flaky test failure on FreeBSD and relatives stable
Augie Fackler <augie@google.com> [Sat, 22 Apr 2017 12:24:47 -0400] rev 32064
tests: work around flaky test failure on FreeBSD and relatives test-http-bad-server has a flaky output case that reproduces fairly often (20% or more of runs on my Mac) on BSD-family OSes. So that tests can be green for the 4.2 release, let's more or less give up on this output, and plan to pursue it in the future.
Thu, 20 Apr 2017 21:40:28 +0200 context: start walking from "introrev" in blockancestors() stable
Denis Laxalde <denis@laxalde.org> [Thu, 20 Apr 2017 21:40:28 +0200] rev 32063
context: start walking from "introrev" in blockancestors() Previously, calling blockancestors() with a fctx not touching file would sometimes yield this filectx first, instead of the first "block ancestor", because when compared to its parent it may have changes in specified line range despite not touching the file at all. Fixing this by starting the algorithm from the "base" filectx obtained using fctx.introrev() (as done in annotate()). In tests, add a changeset not touching file we want to follow lines of to cover this case. Do this in test-annotate.t for followlines revset tests and in test-hgweb-filelog.t for /log/<rev>/<file>?linerange=<from>:<to> tests.
Thu, 13 Apr 2017 16:09:40 -0400 sshpeer: try harder to snag stderr when stdout closes unexpectedly stable
Augie Fackler <augie@google.com> [Thu, 13 Apr 2017 16:09:40 -0400] rev 32062
sshpeer: try harder to snag stderr when stdout closes unexpectedly Resolves test failures on FreeBSD, but I'm not happy about the fix. A previous version of this also wrapped readline by putting the hack in the _call method on doublepipe. That was confusing for readers and wasn't necessary - just doing this on read() is sufficient to fix the bugs I'm observing. We can always come back and do readline later if needed.
Thu, 20 Apr 2017 22:51:28 +0900 test-worker: disable tests of forked workers on Windows stable
Yuya Nishihara <yuya@tcha.org> [Thu, 20 Apr 2017 22:51:28 +0900] rev 32061
test-worker: disable tests of forked workers on Windows The number of the "Traceback" lines differs on Windows because the main process does not raise SystemExit.
Thu, 20 Apr 2017 22:45:45 +0900 test-profile: allow negative time in JSON output (issue5542) stable
Yuya Nishihara <yuya@tcha.org> [Thu, 20 Apr 2017 22:45:45 +0900] rev 32060
test-profile: allow negative time in JSON output (issue5542) I don't know why it can be a negative number, but that shouldn't be important here.
Tue, 18 Apr 2017 11:10:08 -0700 show: add basic labels to work template stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Apr 2017 11:10:08 -0700] rev 32059
show: add basic labels to work template `hg show work` is much more usable if output is colored. This patch implements coloring via label() in a very hacky way. In a default Mercurial install, you'll see yellow node labels for all phases. Branches and bookmarks use the same formatting as the commit message. So this change doesn't help much in a default install. But if you have a custom colors defined for these things, output is much more readable. The implementation obviously needs some work. But for a minor change on a feature that isn't convered by BC, this seems like a clear win for the feature in 4.2.
Tue, 18 Apr 2017 10:49:46 -0700 show: rename "underway" to "work" stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Apr 2017 10:49:46 -0700] rev 32058
show: rename "underway" to "work" Durham and I both like this better than "underway." We can add aliases and bikeshed on the name during the 4.3 cycle, as this whole extension is highly experimental.
Thu, 20 Apr 2017 17:18:08 -0700 histedit: make check for unresolved conflicts explicit (issue5545) stable
Siddharth Agarwal <sid0@fb.com> [Thu, 20 Apr 2017 17:18:08 -0700] rev 32057
histedit: make check for unresolved conflicts explicit (issue5545) Previously, we'd rely on the implicit check that `localrepo.commit` did. The problem is that that check only happened when the working copy was dirty. With a "clean" working copy but unresolved conflicts we'd get into a broken state. To fix that, do what rebase does and check for unresolved conflicts at the start of histedit --continue.
Tue, 18 Apr 2017 14:51:30 -0500 Added signature for changeset 616e788321cc stable
Kevin Bullock <kbullock@ringworld.org> [Tue, 18 Apr 2017 14:51:30 -0500] rev 32056
Added signature for changeset 616e788321cc
Tue, 18 Apr 2017 14:51:24 -0500 Added tag 4.2-rc for changeset 616e788321cc stable
Kevin Bullock <kbullock@ringworld.org> [Tue, 18 Apr 2017 14:51:24 -0500] rev 32055
Added tag 4.2-rc for changeset 616e788321cc
Tue, 18 Apr 2017 12:24:34 -0400 freeze: merge default into stable for 4.2 code freeze stable 4.2-rc
Augie Fackler <augie@google.com> [Tue, 18 Apr 2017 12:24:34 -0400] rev 32054
freeze: merge default into stable for 4.2 code freeze
Tue, 18 Apr 2017 11:22:42 -0400 Merge stable with security patch. stable
Augie Fackler <augie@google.com> [Tue, 18 Apr 2017 11:22:42 -0400] rev 32053
Merge stable with security patch.
Tue, 18 Apr 2017 11:13:01 -0400 Added signature for changeset 77eaf9539499 stable
Augie Fackler <raf@durin42.com> [Tue, 18 Apr 2017 11:13:01 -0400] rev 32052
Added signature for changeset 77eaf9539499
Tue, 18 Apr 2017 11:12:59 -0400 Added tag 4.1.3 for changeset 77eaf9539499 stable
Augie Fackler <raf@durin42.com> [Tue, 18 Apr 2017 11:12:59 -0400] rev 32051
Added tag 4.1.3 for changeset 77eaf9539499
Wed, 12 Apr 2017 11:23:55 -0700 dispatch: protect against malicious 'hg serve --stdio' invocations (sec) stable 4.1.3
Augie Fackler <augie@google.com> [Wed, 12 Apr 2017 11:23:55 -0700] rev 32050
dispatch: protect against malicious 'hg serve --stdio' invocations (sec) Some shared-ssh installations assume that 'hg serve --stdio' is a safe command to run for minimally trusted users. Unfortunately, the messy implementation of argument parsing here meant that trying to access a repo named '--debugger' would give the user a pdb prompt, thereby sidestepping any hoped-for sandboxing. Serving repositories over HTTP(S) is unaffected. We're not currently hardening any subcommands other than 'serve'. If your service exposes other commands to users with arbitrary repository names, it is imperative that you defend against repository names of '--debugger' and anything starting with '--config'. The read-only mode of hg-ssh stopped working because it provided its hook configuration to "hg serve --stdio" via --config parameter. This is banned for security reasons now. This patch switches it to directly call ui.setconfig(). If your custom hosting infrastructure relies on passing --config to "hg serve --stdio", you'll need to find a different way to get that configuration into Mercurial, either by using ui.setconfig() as hg-ssh does in this patch, or by placing an hgrc file someplace where Mercurial will read it. mitrandir@fb.com provided some extra fixes for the dispatch code and for hg-ssh in places that I overlooked.
Thu, 13 Apr 2017 22:31:17 +0900 progress: retry ferr.flush() and .write() on EINTR (issue5532)
Yuya Nishihara <yuya@tcha.org> [Thu, 13 Apr 2017 22:31:17 +0900] rev 32049
progress: retry ferr.flush() and .write() on EINTR (issue5532) See the inline comment how this could mitigate the issue. I couldn't reproduce the exact problem on my Linux machine, but there are at least two people who got EINTR in progress.py, and it seems file_write() of Python 2 is fundamentally broken [1]. Let's make something in on 4.2. [1]: https://hg.python.org/cpython/file/v2.7.13/Objects/fileobject.c#l1850
Thu, 13 Apr 2017 22:27:25 +0900 progress: extract stubs to restart ferr.flush() and .write() on EINTR
Yuya Nishihara <yuya@tcha.org> [Thu, 13 Apr 2017 22:27:25 +0900] rev 32048
progress: extract stubs to restart ferr.flush() and .write() on EINTR
Sat, 25 Feb 2017 19:36:02 +0900 filemerge: optionally strip quotes from merge marker template (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 19:36:02 +0900] rev 32047
filemerge: optionally strip quotes from merge marker template (BC) For consistency with the other template options. Quotes are necessary if you want to preserve leading/trailing whitespace, which would be stripped by config parser.
Sat, 25 Feb 2017 19:32:39 +0900 commit: optionally strip quotes from commit template (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 19:32:39 +0900] rev 32046
commit: optionally strip quotes from commit template (BC) For consistency with the other template options.
Sat, 25 Feb 2017 19:28:16 +0900 graphlog: optionally strip quotes from graphnode template (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 19:28:16 +0900] rev 32045
graphlog: optionally strip quotes from graphnode template (BC) For consistency with the other template options.
Mon, 17 Apr 2017 23:53:19 +0900 dispatch: ignore further SIGPIPE while handling KeyboardInterrupt
Yuya Nishihara <yuya@tcha.org> [Mon, 17 Apr 2017 23:53:19 +0900] rev 32044
dispatch: ignore further SIGPIPE while handling KeyboardInterrupt I got the following error by running "hg log" and quitting the pager immediately. Any output here may trigger another SIGPIPE, so only thing we can do is to swallow the exception and exit with an error status. Traceback (most recent call last): File "./hg", line 45, in <module> mercurial.dispatch.run() File "mercurial/dispatch.py", line 83, in run status = (dispatch(req) or 0) & 255 File "mercurial/dispatch.py", line 167, in dispatch req.ui.warn(_("interrupted!\n")) File "mercurial/ui.py", line 1224, in warn self.write_err(*msg, **opts) File "mercurial/ui.py", line 790, in write_err self._write_err(*msgs, **opts) File "mercurial/ui.py", line 798, in _write_err self.ferr.write(a) File "mercurial/ui.py", line 129, in _catchterm raise error.SignalInterrupt mercurial.error.SignalInterrupt Perhaps this wasn't visible before de5c9d0e02ea because the original stderr handle was restored very late.
Sat, 15 Apr 2017 13:04:55 +0900 worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Apr 2017 13:04:55 +0900] rev 32043
worker: print traceback for uncaught exception unconditionally This is what a Python interpreter would do if there were no os._exit().
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip