[PATCH] rebase: remove experimental option from 'rebase' config section

Martin von Zweigbergk martinvonz at google.com
Sat Feb 27 14:23:32 EST 2016


See
http://thread.gmane.org/gmane.comp.version-control.mercurial.devel/87877/focus=87881

On Sat, Feb 27, 2016, 10:02 Pierre-Yves David <
pierre-yves.david at ens-lyon.org> wrote:

> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1456592532 -3600
> #      Sat Feb 27 18:02:12 2016 +0100
> # Node ID 5000a7efef468a32e4e0b2d26a5ed2dfe75229f4
> # Parent  41dcd754526612c43b9695df8851557c851828ef
> # Available At http://hg.netv6.net/marmoute-wip/mercurial/
> #              hg pull http://hg.netv6.net/marmoute-wip/mercurial/ -r
> 5000a7efef46
> rebase: remove experimental option from 'rebase' config section
>
> Changeset f0e9f38d250f introduced a guard against case where obsolete
> changesets
> are included in the rebase in a way this will result in divergence (because
> rebase create new successors for changeset which already have successors).
> In
> the same go a 'rebase.allowdivergence' option was introduced to control
> that
> behavior.
>
> We rename this config option to 'experimental.allowdivergence' for multiple
> reasons:
>
> * First this behavior is attached to changeset evolution, a feature still
>  experimental.
>
> * Second, there was no 'rebase' section in config before we introduced this
>   option. I would like to avoid proliferation of micro config section and
>   therefore would like to avoid the creation of this new section just for
> an
>   experimental feature.
>
> * Third, this guard (warning the user about a history rewriting operation
> that
>   will create divergence) will very likely be generalised to all history
>   rewriting operations, making this not rebase specific.
>
> * Finally, because this will likely be a general guard present a bit
> everywhere
>   in the UI we'll likely end up with something better than a config option
> to
>   control this behavior, so having the current config option living in
>   experimental will allow us make it disappear in the future.
>
> So we banish this config option back to the experimental section where it
> belongs, killing the newly born 'rebase' config section in the process.
>
> diff --git a/hgext/rebase.py b/hgext/rebase.py
> --- a/hgext/rebase.py
> +++ b/hgext/rebase.py
> @@ -304,21 +304,21 @@ def rebase(ui, repo, **opts):
>
>  rebaseobsrevs,
>                                                                  dest)
>                  rebaseobsskipped = set(obsoletenotrebased)
>
>                  # Obsolete node with successors not in dest leads to
> divergence
> -                divergenceok = ui.configbool('rebase',
> +                divergenceok = ui.configbool('experimental',
>                                               'allowdivergence')
>                  divergencebasecandidates = rebaseobsrevs -
> rebaseobsskipped
>
>                  if divergencebasecandidates and not divergenceok:
>                      divhashes = (str(repo[r])
>                                   for r in divergencebasecandidates)
>                      msg = _("this rebase will cause "
>                              "divergences from: %s")
>                      h = _("to force the rebase please set "
> -                          "rebase.allowdivergence=True")
> +                          "experimental.allowdivergence=True")
>                      raise error.Abort(msg % (",".join(divhashes),),
> hint=h)
>
>                  # - plain prune (no successor) changesets are rebased
>                  # - split changesets are not rebased if at least one of
> the
>                  # changeset resulting from the split is an ancestor of
> dest
> diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t
> --- a/tests/test-rebase-obsolete.t
> +++ b/tests/test-rebase-obsolete.t
> @@ -770,11 +770,11 @@ If a rebase is going to create divergenc
>    update: 2 new changesets, 3 branch heads (merge)
>    phases: 8 draft
>    unstable: 1 changesets
>    $ hg rebase -s 10 -d 12
>    abort: this rebase will cause divergences from: 121d9e3bc4c6
> -  (to force the rebase please set rebase.allowdivergence=True)
> +  (to force the rebase please set experimental.allowdivergence=True)
>    [255]
>    $ hg log -G
>    @  15:73568ab6879d bar foo
>    |
>    | o  14:77d874d096a2 10'
> @@ -789,13 +789,13 @@ If a rebase is going to create divergenc
>    |
>    o  2:261e70097290 B2
>    |
>    o  0:4a2df7238c3b A
>
> -With rebase.allowdivergence=True, rebase can create divergence
> +With experimental.allowdivergence=True, rebase can create divergence
>
> -  $ hg rebase -s 10 -d 12 --config rebase.allowdivergence=True
> +  $ hg rebase -s 10 -d 12 --config experimental.allowdivergence=True
>    rebasing 10:121d9e3bc4c6 "P"
>    rebasing 15:73568ab6879d "bar foo" (tip)
>    $ hg summary
>    parent: 17:61bd55f69bc4 tip
>     bar foo
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160227/06f9f4aa/attachment.html>


More information about the Mercurial-devel mailing list