aboutsummaryrefslogtreecommitdiff
path: root/b4/mbox.py
diff options
context:
space:
mode:
authorKonstantin Ryabitsev <konstantin@linuxfoundation.org>2020-10-02 08:56:39 -0400
committerKonstantin Ryabitsev <konstantin@linuxfoundation.org>2020-10-02 08:56:39 -0400
commitca6d35e7728c17b505e6be62ec3b6687aa5bf26b (patch)
tree28ca6c911735d941184c8932f9e2cb2f37c0e035 /b4/mbox.py
parentb34efebe5026567efad9cd71f308000504dd8e31 (diff)
downloadb4-ca6d35e7728c17b505e6be62ec3b6687aa5bf26b.tar.gz
Fix some cherry-picking corner cases
Handle several corner cases when trying to cherrypick from incomplete series. Reported-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Diffstat (limited to 'b4/mbox.py')
-rw-r--r--b4/mbox.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/b4/mbox.py b/b4/mbox.py
index 754d0f8..2ec74c9 100644
--- a/b4/mbox.py
+++ b/b4/mbox.py
@@ -86,12 +86,12 @@ def mbox_to_am(mboxfile, cmdargs):
at = 0
for lmsg in lser.patches[1:]:
at += 1
- if lmsg.msgid == msgid:
+ if lmsg and lmsg.msgid == msgid:
cherrypick = [at]
- cmdargs.cherrypick = '5'
+ cmdargs.cherrypick = f'<{msgid}>'
break
if not len(cherrypick):
- logger.critical('Specified msgid is not present in the series, cannot cherry-pick')
+ logger.critical('Specified msgid is not present in the series, cannot cherrypick')
sys.exit(1)
elif cmdargs.cherrypick.find('*') >= 0:
# Globbing on subject
@@ -110,10 +110,14 @@ def mbox_to_am(mboxfile, cmdargs):
logger.critical('Writing %s', am_filename)
mbx = mailbox.mbox(am_filename)
- am_mbx = lser.save_am_mbox(mbx, noaddtrailers=cmdargs.noaddtrailers,
- covertrailers=covertrailers, trailer_order=config['trailer-order'],
- addmysob=cmdargs.addmysob, addlink=cmdargs.addlink,
- linkmask=config['linkmask'], cherrypick=cherrypick)
+ try:
+ am_mbx = lser.save_am_mbox(mbx, noaddtrailers=cmdargs.noaddtrailers,
+ covertrailers=covertrailers, trailer_order=config['trailer-order'],
+ addmysob=cmdargs.addmysob, addlink=cmdargs.addlink,
+ linkmask=config['linkmask'], cherrypick=cherrypick)
+ except KeyError:
+ sys.exit(1)
+
logger.info('---')
if cherrypick is None:
@@ -153,7 +157,7 @@ def mbox_to_am(mboxfile, cmdargs):
logger.info('Prepared a fake commit range for 3-way merge (%.12s..%.12s)', rstart, rend)
logger.critical('---')
- if not lser.complete:
+ if not lser.complete and not cmdargs.cherrypick:
logger.critical('WARNING: Thread incomplete!')
if lser.has_cover and not cmdargs.nocover: