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 38531
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 38530
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 38529
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 38528
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
Tue, 03 Jul 2018 12:22:37 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 03 Jul 2018 12:22:37 -0400] rev 38527
merge with stable
Fri, 29 Jun 2018 23:13:23 +0900 revset: add partial support for ancestor(wdir())
Yuya Nishihara <yuya@tcha.org> [Fri, 29 Jun 2018 23:13:23 +0900] rev 38526
revset: add partial support for ancestor(wdir()) It's easy, so let's make it happen. I'm not certain if 'wdir() &' should be required. ancestors(wdir()) works without it, but ancestor(wdir()) doesn't as of now. That's the issue of fullreposet.__contains__() vs __and__().
Sat, 23 Jun 2018 13:19:03 +0100 context: also accept diff option directly
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 13:19:03 +0100] rev 38525
context: also accept diff option directly For now we accept both diff option and dictionary. This will let us upgrade internal users gradually before we drop the old API at the end of this series.
Wed, 23 May 2018 15:31:40 +0200 context: also take all other arguments than `patch.diff` accept
Boris Feld <boris.feld@octobus.net> [Wed, 23 May 2018 15:31:40 +0200] rev 38524
context: also take all other arguments than `patch.diff` accept This is needed to use `context.diff` as a full replacement of `patch.diff`
Tue, 22 May 2018 15:02:52 +0200 context: explicitly take diffopts in `context.diff` (API)
Boris Feld <boris.feld@octobus.net> [Tue, 22 May 2018 15:02:52 +0200] rev 38523
context: explicitly take diffopts in `context.diff` (API) To provide a proper replacement for the `patch.diff(…)` function, the `context.diff(…)` method needs to be able to take more parameters. To distinguish the diff options from the new other arguments, we upgrade the diff options to its own explicit argument.
Sun, 01 Jul 2018 01:00:39 +0530 rebase: check whether the rebasestate exists or not a bit early
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 01:00:39 +0530] rev 38522
rebase: check whether the rebasestate exists or not a bit early Converted the else part into `if True` because that part will soon be under a except part. Differential Revision: https://phab.mercurial-scm.org/D3876
Sun, 01 Jul 2018 00:52:25 +0530 rebase: use staeobj to check whether interrupted rebase exists
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 00:52:25 +0530] rev 38521
rebase: use staeobj to check whether interrupted rebase exists This cleans up the code a bit. Differential Revision: https://phab.mercurial-scm.org/D3875
Sun, 01 Jul 2018 00:46:59 +0530 rebase: add a stateobj variable to rebaseruntime class
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 00:46:59 +0530] rev 38520
rebase: add a stateobj variable to rebaseruntime class The stateobj variable is an object of state.cmdstate() and will be used in upcoming patches to clean up the logic a bit and also use cbor format to write data to rebasestate class. Differential Revision: https://phab.mercurial-scm.org/D3874
Sun, 01 Jul 2018 00:31:57 +0530 rebase: refactor logic to read rebasestate in a separate function
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 00:31:57 +0530] rev 38519
rebase: refactor logic to read rebasestate in a separate function This will help us in plugging the use of state.cmdstate() to read rebasestate. Differential Revision: https://phab.mercurial-scm.org/D3873
Fri, 22 Jun 2018 00:07:22 +0100 revlog: reuse 'descendant' implemention in 'isancestor'
Boris Feld <boris.feld@octobus.net> [Fri, 22 Jun 2018 00:07:22 +0100] rev 38518
revlog: reuse 'descendant' implemention in 'isancestor' The two functions do the same thing, but one takes nodes while the other takes revs. Using one to implement the other make sense. We should probably cleanup the API at some point to avoid having so many similar functions. However, we focus on an efficient implementation for now.
Fri, 22 Jun 2018 00:05:20 +0100 revlog: efficient implementation of 'descendant'
Boris Feld <boris.feld@octobus.net> [Fri, 22 Jun 2018 00:05:20 +0100] rev 38517
revlog: efficient implementation of 'descendant' Iterating over descendants is costly, because there are no "parent -> children" pointers. Walking the other way around is much more efficient, especially on large repositories, where descendant walks can cost seconds. And the other hand, common ancestors code follows links in the right direction and has a compiled implementation. In real life usage, this saved up to 80s during some pull operations, where descendant test happens in extension code.
Thu, 21 Jun 2018 23:56:51 +0100 revlog: refactor out the rev-oriented part of commonancestorheads
Boris Feld <boris.feld@octobus.net> [Thu, 21 Jun 2018 23:56:51 +0100] rev 38516
revlog: refactor out the rev-oriented part of commonancestorheads We plan to use this in a function taking revs as argument. Round trips to nodes seem silly.
(0) -30000 -10000 -3000 -1000 -300 -100 -16 +16 +100 +300 +1000 +3000 +10000 tip