Mon, 01 May 2017 19:58:52 +0900 lock: avoid unintentional lock acquisition at failure of readlock stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 19:58:52 +0900] rev 32087
lock: avoid unintentional lock acquisition at failure of readlock Acquiring lock by vfs.makelock() and getting lock holder (aka "locker") information by vfs.readlock() aren't atomic action. Therefore, failure of the former doesn't ensure success of the latter. Before this patch, lock is unintentionally acquired, if self.parentlock is None (this is default value), and lock._readlock() returns None for ENOENT at vfs.readlock(), because these None are recognized as equal to each other. In this case, lock symlink (or file) isn't created, even though lock is treated as acquired in memory. To avoid this issue, this patch retries lock acquisition immediately, if lock._readlock() returns None "locker". This issue will be covered by a test added in subsequent patch, because simple emulation of ENOENT at vfs.readlock() easily causes another issue. "raising ENOENT only at the first vfs.readlock() invocation" is too complicated for unit test, IMHO.
Mon, 01 May 2017 05:52:36 +0900 httppeer: unify hint message for PeerTransportError stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 05:52:36 +0900] rev 32086
httppeer: unify hint message for PeerTransportError Another raising PeerTransportError for "incomplete response" in httppeer.py uses this (changed) hint message. This unification reduces cost of translation.
Mon, 01 May 2017 05:52:36 +0900 revset: add i18n comments to error messages for followlines predicate stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 05:52:36 +0900] rev 32085
revset: add i18n comments to error messages for followlines predicate This patch also includes un-quoting "descend" keyword for similarity to other error messages (this seems too trivial as a separated patch).
Mon, 01 May 2017 05:52:32 +0900 help: apply bulk fixes for indentation and literal blocking issues stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 05:52:32 +0900] rev 32084
help: apply bulk fixes for indentation and literal blocking issues There are some paragraphs, which aren't rendered in online help as expected because of indentation and literal blocking issues. - hgext/rebase.py - paragraph before example code ends with ":", which treats subsequent indented paragraphs as normal block => replace ":" with "::" to treat subsequent paragraphs as literal block - help/pager.txt - paragraph before a list of --pager option values ends with "::", which treats subsequent indented paragraphs as literal block => replace "::" with ":" to treat subsequent paragraphs as normal block - the second line of explanation for no/off --pager option value is indented incorrectly (this also causes failure of "make" in doc) => indent correctly - help/revisions.txt - explanation following example code of "[revsetalias]" section isn't suitable for literal block => un-indent explanation paragraph to treat it as normal block - indentation of "For example" before example of tag() revset predicate matching is meaningless - descriptive text for tag() revset predicate matching isn't suitable for literal block => un-indent concatenated two paragraphs to treat them as normal block
Mon, 01 May 2017 05:38:52 +0900 rebase: fix incorrect configuration example stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 05:38:52 +0900] rev 32083
rebase: fix incorrect configuration example This configuration example doesn't make rebase require a destination, even though help document wants to show such example.
Mon, 01 May 2017 05:38:52 +0900 help: use hg role of mini reST to make hyper link in HTML page stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 05:38:52 +0900] rev 32082
help: use hg role of mini reST to make hyper link in HTML page
Mon, 01 May 2017 05:35:57 +0900 help: use mercurial as a subject of colorization and pagination stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 May 2017 05:35:57 +0900] rev 32081
help: use mercurial as a subject of colorization and pagination Now, colorization and pagination are in Mercurial core.
Tue, 25 Apr 2017 16:50:01 +0200 packaging: add make target for linux wheels stable
Boris Feld <boris.feld@octobus.net> [Tue, 25 Apr 2017 16:50:01 +0200] rev 32080
packaging: add make target for linux wheels Having linux wheels is going to helps system without compiler or python-dev plus speed up the installation for everyone. I followed the manylinux example repository https://github.com/pypa/python-manylinux-demo to add a make target (build-linux-wheels) using official docker image to build python 2 linux wheels for mercurial. It generates Python 2.6 and Python 2.7 for both 32 and 64 bits architectures. I had to blacklist several test cases for various reasons: * test-convert-git.t and test-subrepo-git.t because of the git version * test-patchbomb-tls.t because of warning using tls 1.0 It's likely because the docker image is based on centos 5.0 and openssl is outdated.
Tue, 25 Apr 2017 16:50:01 +0200 tests: fix two http tests to also pass inside manylinux1 docker stable
Boris Feld <boris.feld@octobus.net> [Tue, 25 Apr 2017 16:50:01 +0200] rev 32079
tests: fix two http tests to also pass inside manylinux1 docker This will let us build Linux wheels.
Fri, 28 Apr 2017 20:51:14 +0900 pager: use less as a fallback on Unix stable
Yuya Nishihara <yuya@tcha.org> [Fri, 28 Apr 2017 20:51:14 +0900] rev 32078
pager: use less as a fallback on Unix This seems reasonable choice per discussion, and the default-default of Git. See also the inline-comment for why. https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/097042.html
Tue, 25 Apr 2017 22:10:26 -0400 test-bookmarks: factor hooks out to a shell script for Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 25 Apr 2017 22:10:26 -0400] rev 32077
test-bookmarks: factor hooks out to a shell script for Windows The previous incarnation of the hooks weren't being run on Windows, which altered the DAG and hashes[1]. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096987.html
Wed, 19 Apr 2017 17:04:22 -0700 help: explain how to access subtopics in internals stable
Matt DeVore <matvore@google.com> [Wed, 19 Apr 2017 17:04:22 -0700] rev 32076
help: explain how to access subtopics in internals
Tue, 18 Apr 2017 14:51:32 -0700 log: document the characters ---graph uses to draw stable
Matt DeVore <matvore@google.com> [Tue, 18 Apr 2017 14:51:32 -0700] rev 32075
log: document the characters ---graph uses to draw The meaning of : vs | was undocumented and non-obvious.
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().
Sat, 15 Apr 2017 13:27:44 +0900 worker: propagate exit code to main process
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Apr 2017 13:27:44 +0900] rev 32042
worker: propagate exit code to main process Follows up 86cd09bc13ba.
Sat, 15 Apr 2017 13:02:34 +0900 dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Apr 2017 13:02:34 +0900] rev 32041
dispatch: print traceback in scmutil.callcatch() if --traceback specified Otherwise, traceback wouldn't be printed for a known exception occurred in worker processes.
Sat, 15 Apr 2017 12:58:06 +0900 dispatch: mark callcatch() as a private function
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Apr 2017 12:58:06 +0900] rev 32040
dispatch: mark callcatch() as a private function
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip