rebase: add flag to require destination
In some mercurial workflows, the default destination for rebase does not
always work well and can lead to confusing behavior. With this flag enabled,
every rebase command will require passing an explicit destination, eliminating
this confusion.
--- a/hgext/rebase.py Tue Mar 14 17:43:18 2017 -0700
+++ b/hgext/rebase.py Tue Mar 14 17:43:44 2017 -0700
@@ -662,6 +662,16 @@
hg rebase -r "branch(featureX)" -d 1.3 --keepbranches
+ Configuration Options:
+
+ You can make rebase require a destination if you set the following config
+ option:
+
+ [commands]
+ rebase.requiredest = False
+
+ Return Values:
+
Returns 0 on success, 1 if nothing to rebase or there are
unresolved conflicts.
@@ -675,6 +685,12 @@
# Validate input and define rebasing points
destf = opts.get('dest', None)
+
+ if ui.config('commands', 'rebase.requiredest', False):
+ if not destf:
+ raise error.Abort(_('you must specify a destination'),
+ hint=_('use: hg rebase -d REV'))
+
srcf = opts.get('source', None)
basef = opts.get('base', None)
revf = opts.get('rev', [])
--- a/tests/test-rebase-base.t Tue Mar 14 17:43:18 2017 -0700
+++ b/tests/test-rebase-base.t Tue Mar 14 17:43:44 2017 -0700
@@ -391,3 +391,25 @@
/
o 0: A
+Require a destination
+ $ cat >> $HGRCPATH <<EOF
+ > [commands]
+ > rebase.requiredest = True
+ > EOF
+ $ hg init repo
+ $ cd repo
+ $ echo a >> a
+ $ hg commit -qAm aa
+ $ echo b >> b
+ $ hg commit -qAm bb
+ $ hg up ".^"
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo c >> c
+ $ hg commit -qAm cc
+ $ hg rebase
+ abort: you must specify a destination
+ (use: hg rebase -d REV)
+ [255]
+ $ hg rebase -d 1
+ rebasing 2:5db65b93a12b "cc" (tip)
+ saved backup bundle to $TESTTMP/repo/.hg/strip-backup/5db65b93a12b-4fb789ec-backup.hg (glob)