Mercurial > hg
changeset 33690:40cfe3197bc1
phabricator: add --confirm option to phabsend command
This adds a --confirm flag similar to the confirm flag of `hg email` using which
one can confirm the changesets before they get emailed. The confirm flag will
show the changesets and ask for confirmation before sending them.
Differential Revision: https://phab.mercurial-scm.org/D218
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Thu, 03 Aug 2017 03:09:33 +0530 |
parents | 9c27a2891b75 |
children | 1664406a44d9 |
files | contrib/phabricator.py |
diffstat | 1 files changed, 30 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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