--- a/contrib/phabricator.py Tue Aug 01 18:07:34 2017 +0200
+++ b/contrib/phabricator.py Thu Aug 03 03:09:33 2017 +0530
@@ -313,7 +313,8 @@
@command('phabsend',
[('r', 'rev', [], _('revisions to send'), _('REV')),
- ('', 'reviewer', [], _('specify reviewers'))],
+ ('', 'reviewer', [], _('specify reviewers')),
+ ('', 'confirm', None, _('ask for confirmation before sending'))],
_('REV [OPTIONS]'))
def phabsend(ui, repo, *revs, **opts):
"""upload changesets to Phabricator
@@ -326,6 +327,13 @@
maintain the association. After the first time, phabsend will check
obsstore and tags information so it can figure out whether to update an
existing Differential Revision, or create a new one.
+
+ The --confirm option lets you confirm changesets before sending them. You
+ can also add following to your configuration file to make it default
+ behaviour.
+
+ [phabsend]
+ confirm = true
"""
revs = list(revs) + opts.get('rev', [])
revs = scmutil.revrange(repo, revs)
@@ -333,6 +341,13 @@
if not revs:
raise error.Abort(_('phabsend requires at least one changeset'))
+ confirm = ui.configbool('phabsend', 'confirm')
+ confirm |= bool(opts.get('confirm'))
+ if confirm:
+ confirmed = _confirmbeforesend(repo, revs)
+ if not confirmed:
+ raise error.Abort(_('phabsend cancelled'))
+
actions = []
reviewers = opts.get('reviewer', [])
if reviewers:
@@ -379,6 +394,20 @@
_metanamemap = util.sortdict([(r'user', 'User'), (r'date', 'Date'),
(r'node', 'Node ID'), (r'parent', 'Parent ')])
+def _confirmbeforesend(repo, revs):
+ ui = repo.ui
+ for rev in revs:
+ ctx = repo[rev]
+ desc = ctx.description().splitlines()[0]
+ ui.write(('%d: ' % rev), label='phabsend.revnumber')
+ ui.write(('%s\n' % desc), label='phabsend.desc')
+
+ if ui.promptchoice(_('Phabsend the above changes (yn)?'
+ '$$ &Yes $$ &No')):
+ return False
+
+ return True
+
def querydrev(repo, params, stack=False):
"""return a list of "Differential Revision" dicts