def patch_field(matchobj):
fieldname = matchobj.group(1)
- return str(patch[fieldname])
+
+ if fieldname == "_msgid_":
+ # naive way to strip < and > from message-id
+ val = string.strip(str(patch["msgid"]), "<>")
+ else:
+ val = str(patch[fieldname])
+
+ return val
for patch in patches:
print(format_field_re.sub(patch_field, format_str))
if len(s) > 0:
proc = subprocess.Popen(apply_cmd, stdin = subprocess.PIPE)
proc.communicate(unicode(s).encode('utf-8'))
+ return proc.returncode
else:
sys.stderr.write("Error: No patch content found\n")
sys.exit(1)
'id', metavar='ID', nargs='*', action='store', type=int,
help='Patch ID',
)
+ hash_parser.add_argument(
+ '-p', metavar='PROJECT',
+ help='''Lookup patch in project'''
+ )
filter_parser = argparse.ArgumentParser(add_help=False, version=False)
filter_parser.add_argument(
url = config.get(project_str, 'url')
- (username, password) = (None, None)
transport = None
if action in auth_actions:
if config.has_option(project_str, 'username') and \
elif action == 'apply':
for patch_id in non_empty(h, patch_ids):
- action_apply(rpc, patch_id)
+ ret = action_apply(rpc, patch_id)
+ if ret:
+ sys.stderr.write("Apply failed with exit status %d\n" % ret)
+ sys.exit(1)
elif action == 'git_am':
cmd = ['git', 'am']
if do_signoff:
cmd.append('-s')
for patch_id in non_empty(h, patch_ids):
- action_apply(rpc, patch_id, cmd)
+ ret = action_apply(rpc, patch_id, cmd)
+ if ret:
+ sys.stderr.write("'git am' failed with exit status %d\n" % ret)
+ sys.exit(1)
elif action == 'update':
for patch_id in non_empty(h, patch_ids):