[PATCH v2] rollback: add a config knob for entirely disabling the command

Gregory Szorc gregory.szorc at gmail.com
Wed May 4 02:02:43 EDT 2016


'hg rollback' is already marked as deprecated. Can we rename it (debugrollback?), remove it entirely, require a config option to enable it, or move it to an extension?

> On May 3, 2016, at 18:41, Augie Fackler <raf at durin42.com> wrote:
> 
> # HG changeset patch
> # User Augie Fackler <augie at google.com>
> # Date 1462307605 14400
> #      Tue May 03 16:33:25 2016 -0400
> # Node ID fccaae31a23fee6a82df37d6163613741e7a257c
> # Parent  8eba4cdcfd810d80785c94d770a442c5bd1f9d0f
> rollback: add a config knob for entirely disabling the command
> 
> This is of pretty high value for organizations that used to use p4 (as
> an example), since `p4 rollback` is what we call `hg backout`.
> 
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -6377,6 +6377,11 @@ def rollback(ui, repo, **opts):
>       commit transaction if it isn't checked out. Use --force to
>       override this protection.
> 
> +      The rollback command can be entirely disabled using the
> +      `ui.norollback` configuration setting. If you're here because
> +      you want to use rollback and it's disabled, you can re-enable
> +      the command by setting `ui.norollback` to `true`.
> +
>     This command is not intended for use on public repositories. Once
>     changes are visible for pull by other users, rolling a transaction
>     back locally is ineffective (someone else may already have pulled
> @@ -6386,6 +6391,9 @@ def rollback(ui, repo, **opts):
> 
>     Returns 0 on success, 1 if no rollback data is available.
>     """
> +    if ui.configbool('ui', 'norollback', False):
> +        raise error.Abort(_('rollback is disabled because it is unsafe'),
> +                          hint=('see `hg help -v rollback` for information'))
>     return repo.rollback(dryrun=opts.get('dry_run'),
>                          force=opts.get('force'))
> 
> diff --git a/tests/test-rollback.t b/tests/test-rollback.t
> --- a/tests/test-rollback.t
> +++ b/tests/test-rollback.t
> @@ -196,3 +196,15 @@ corrupt journal test
>   checking files
>   1 files, 2 changesets, 2 total revisions
> 
> +rollback disabled by config
> +  $ cat >> $HGRCPATH <<EOF
> +  > [ui]
> +  > norollback = true
> +  > EOF
> +  $ echo narf >> pinky-sayings.txt
> +  $ hg add pinky-sayings.txt
> +  $ hg ci -m 'First one.'
> +  $ hg rollback
> +  abort: rollback is disabled because it is unsafe
> +  (see `hg help -v rollback` for information)
> +  [255]
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list