[PATCH] patchbomb: add -B option to select a bookmark
David Demelier
demelier.david at gmail.com
Fri Feb 3 14:04:21 UTC 2017
# HG changeset patch
# User David Demelier <demelier.david at gmail.com>
# Date 1486130547 -3600
# Fri Feb 03 15:02:27 2017 +0100
# Node ID a9061ca9a25c8e16150fd2e1574ccac1310b7a03
# Parent abf029200e198878a4576a87e095bd8d77d9cea9
patchbomb: add -B option to select a bookmark
Add the -B/--bookmark option to select a bookmark whose changesets
and its ancestors will be selected unless a new bookmark/head is
found.
This is inspired by hg strip -B option.
diff -r abf029200e19 -r a9061ca9a25c hgext/patchbomb.py
--- a/hgext/patchbomb.py Wed Feb 01 11:30:26 2017 -0600
+++ b/hgext/patchbomb.py Fri Feb 03 15:02:27 2017 +0100
@@ -81,6 +81,7 @@
mail,
node as nodemod,
patch,
+ repair,
scmutil,
util,
)
@@ -411,6 +412,7 @@
('o', 'outgoing', None,
_('send changes not found in the target repository')),
('b', 'bundle', None, _('send changes not in target as a binary bundle')),
+ ('B', 'bookmark', '', _('send changes only reachable by given bookmark')),
('', 'bundlename', 'bundle',
_('name of the bundle attachment file'), _('NAME')),
('r', 'rev', [], _('a revision to send'), _('REV')),
@@ -449,6 +451,9 @@
body and as a regular or an inline attachment by combining the
-a/--attach or -i/--inline with the --body option.
+ With -B/--bookmark changesets reachable by the given bookmark are
+ selected.
+
With -o/--outgoing, emails will be generated for patches not found
in the destination repository (or only those which are ancestors
of the specified revisions if any are provided)
@@ -489,6 +494,8 @@
hg email -o -r 3000 # send all ancestors of 3000 not in default
hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
+ hg email -B feature # send all ancestors of feature bookmark
+
hg email -b # send bundle of all patches not in default
hg email -b DEST # send bundle of all patches not in DEST
hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
@@ -511,6 +518,7 @@
mbox = opts.get('mbox')
outgoing = opts.get('outgoing')
rev = opts.get('rev')
+ bookmark = opts.get('bookmark')
# internal option used by pbranches
patches = opts.get('patches')
@@ -518,8 +526,8 @@
# really sending
mail.validateconfig(ui)
- if not (revs or rev or outgoing or bundle or patches):
- raise error.Abort(_('specify at least one changeset with -r or -o'))
+ if not (revs or rev or outgoing or bundle or patches or bookmark):
+ raise error.Abort(_('specify at least one changeset with -B, -r or -o'))
if outgoing and bundle:
raise error.Abort(_("--outgoing mode always on with --bundle;"
@@ -538,6 +546,10 @@
if revs:
raise error.Abort(_('use only one form to specify the revision'))
revs = rev
+ elif bookmark:
+ if not bookmark in repo._bookmarks:
+ raise error.Abort(_("bookmark '%s' not found") % bookmark)
+ revs = repair.stripbmrevset(repo, bookmark)
revs = scmutil.revrange(repo, revs)
if outgoing:
More information about the Mercurial-devel
mailing list