Tue, 26 Jun 2018 15:27:29 -0700 worker: support more return types in posix worker
Danny Hooper <hooper@google.com> [Tue, 26 Jun 2018 15:27:29 -0700] rev 38535
worker: support more return types in posix worker This allows us to return things that aren't tuple(int, str) from worker functions. I wanted to use marshal instead of pickle, but it seems to read from the pipe in non-blocking mode, which means it stops before it sees the results. The windows worker already supports arbitrary return values without serialization, because it uses threads instead of subprocesses. Differential Revision: https://phab.mercurial-scm.org/D3845
Tue, 19 Jun 2018 19:18:31 +0100 debug: process --debug flag earlier
Boris Feld <boris.feld@octobus.net> [Tue, 19 Jun 2018 19:18:31 +0100] rev 38534
debug: process --debug flag earlier This allow the verbosity level to be set correctly during extension initialization.
Wed, 04 Jul 2018 14:19:13 +0200 windows: fix incorrect detection of broken pipe when writing to pager stable
Sune Foldager <cryo@cyanite.org> [Wed, 04 Jul 2018 14:19:13 +0200] rev 38533
windows: fix incorrect detection of broken pipe when writing to pager Paging e.g. hg incoming on Windows and quitting the pager before the output is consumed will print 'abort: Invalid argument'. This is because the windows error 0xE8 (ERROR_NO_DATA) is mapped to EINVAL even though it is documented as 'The pipe is being closed'. Note that this fix assumes that Windows' last error code is still valid in the exception handler. It works correctly in all my tests. A simpler fix would be to just map EINVAL to EPIPE, like was done is flush previously, but that would be less precise. This error was not observed previously, when pager was an extension.
Tue, 19 Jun 2018 19:10:31 +0100 test: stop passing --quiet in a run dedicated to debug output
Boris Feld <boris.feld@octobus.net> [Tue, 19 Jun 2018 19:10:31 +0100] rev 38532
test: stop passing --quiet in a run dedicated to debug output The goal of the run is to display some debug output. Passing --quiet in this case is strange.
Fri, 15 Jun 2018 14:07:13 -0400 acl: add bookmarks support
Sandu Turcan <idlsoft@gmail.com> [Fri, 15 Jun 2018 14:07:13 -0400] rev 38531
acl: add bookmarks support Originally submitted at https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-March/080650.html as an RFC by timeless. .. feature:: The `acl` extension now has support for bookmarks as well as branches. Differential Revision: https://phab.mercurial-scm.org/D3750
Sat, 30 Jun 2018 18:34:33 -0700 repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 18:34:33 -0700] rev 38530
repository: define manifest interfaces The long march towards declaring interfaces for repository primitives continues. This commit essentially defines interfaces based on the following types: * manifest.manifestdict -> imanifestdict * manifest.manifestlog -> imanifestlog * manifest.memmanifestctx -> imanifestrevisionwritable * manifest.manifestctx -> imanifestrevisionstored * manifest.memtreemanifestctx -> imanifestrevisionwritable * manifest.treemanifestctx -> imanifestrevisionstored * util.dirs -> idirs The interfaces are thoroughly documented. Their documentation is now better than the documentation in manifest.py in many cases. With the exception of util.dirs, classes have been annotated with their interfaces. (I didn't feel like util.dirs needed the proper interface treatment.) Tests have been added demonstrating that all classes and instances conform to their interfaces. This work was much easier than filelogs. That's because Durham did an excellent job formalizing the manifest API a while back. There are still some minor kludges with the interfaces that should probably be addressed. But the primary goal with interface declarations is getting something established. Once we have an interface, we can modify it later easily enough. Differential Revision: https://phab.mercurial-scm.org/D3869
Tue, 12 Jun 2018 11:31:20 -0400 narrowbundle2: when we handle a widen, mark the operation as unsafe
Augie Fackler <augie@google.com> [Tue, 12 Jun 2018 11:31:20 -0400] rev 38529
narrowbundle2: when we handle a widen, mark the operation as unsafe We have to manually drive the context manager here since the logic is awkwardly split between a couple of places. Differential Revision: https://phab.mercurial-scm.org/D3719
Mon, 11 Jun 2018 17:06:29 -0400 narrow: mark the critical chunks of narrowing/widening as unsafe
Augie Fackler <augie@google.com> [Mon, 11 Jun 2018 17:06:29 -0400] rev 38528
narrow: mark the critical chunks of narrowing/widening as unsafe I'm _mostly_ sure these are the only unsafe chunks here. Differential Revision: https://phab.mercurial-scm.org/D3718
Mon, 11 Jun 2018 17:03:29 -0400 repair: mark the critical section of strip() as unsafe
Augie Fackler <augie@google.com> [Mon, 11 Jun 2018 17:03:29 -0400] rev 38527
repair: mark the critical section of strip() as unsafe When our experimental nointerrupt feature is enabled, this will help prevent users from corrupting their repo during a strip. Differential Revision: https://phab.mercurial-scm.org/D3717
Wed, 27 Jun 2018 10:47:14 -0400 ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com> [Wed, 27 Jun 2018 10:47:14 -0400] rev 38526
ui: add an uninterruptable context manager that can block SIGINT The blocking of SIGINT is not done by default, but my hope is that we will one day. This was inspired by Facebook's "nointerrupt" extension, which is a bit more heavy-handed than this (whole commands are treated as unsafe to interrupt). A future patch will enable this for varying bits of Mercurial that are performing unsafe operations. It's intentional that the KeyboardInterrupt is raised as the context manager exits: during the span of the context manager interrupting Mercurial could lead to data loss, but typically those spans are fairly narrow, so we can let the unsafe block complete and then terminate hg (which will leave the repo in a consistent state, even if it's not the user's desired state). .. api:: New context manager ``ui.uninterruptable()`` to mark portions of a command as potentially unsafe places to interrupt Mercurial with Control-C or similar. Differential Revision: https://phab.mercurial-scm.org/D3716
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip