From patchwork Wed May 4 01:41:56 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v2] rollback: add a config knob for entirely disabling the command From: Augie Fackler X-Patchwork-Id: 14876 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Tue, 03 May 2016 21:41:56 -0400 # HG changeset patch # User Augie Fackler # 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 < [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]