"""Pop the patches in the list from the stack. It is assumed that
the patches are listed in the stack reverse order.
"""
- p = patches[-1]
- if len(patches) == 1:
- print 'Popping patch "%s"...' % p,
+ if len(patches) == 0:
+ print 'nothing to push/pop'
else:
- print 'Popping "%s" - "%s" patches...' % (patches[0], p),
- sys.stdout.flush()
+ p = patches[-1]
+ if len(patches) == 1:
+ print 'Popping patch "%s"...' % p,
+ else:
+ print 'Popping "%s" - "%s" patches...' % (patches[0], p),
+ sys.stdout.flush()
- crt_series.pop_patch(p, keep)
+ crt_series.pop_patch(p, keep)
- print 'done'
+ print 'done'
def parse_patches(patch_args, patch_list):
"""Parse patch_args list for patch names in patch_list and return
return str_list[0]
-def make_patch_name(msg):
+def patch_name_from_msg(msg):
"""Return a string to be used as a patch name. This is generated
- from the top line of the string passed as argument.
- """
+ from the first 30 characters of the top line of the string passed
+ as argument."""
if not msg:
return None
- subject_line = msg.lstrip().split('\n', 1)[0].lower()
+ subject_line = msg[:30].lstrip().split('\n', 1)[0].lower()
return re.sub('[\W]+', '-', subject_line).strip('-')
+
+def make_patch_name(msg, unacceptable, default_name = 'patch',
+ alternative = True):
+ """Return a patch name generated from the given commit message,
+ guaranteed to make unacceptable(name) be false. If the commit
+ message is empty, base the name on default_name instead."""
+ patchname = patch_name_from_msg(msg)
+ if not patchname:
+ patchname = default_name
+ if alternative and unacceptable(patchname):
+ suffix = 0
+ while unacceptable('%s-%d' % (patchname, suffix)):
+ suffix += 1
+ patchname = '%s-%d' % (patchname, suffix)
+ return patchname