X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/b839b1cf42be33947adb87d6a2ae2164aad2371e..d1368d811f20d4957d9fca7a8fe016e764f77d1b:/stgit/commands/common.py diff --git a/stgit/commands/common.py b/stgit/commands/common.py index d986711..8a625f8 100644 --- a/stgit/commands/common.py +++ b/stgit/commands/common.py @@ -214,7 +214,7 @@ def pop_patches(patches, keep = False): print 'done' -def parse_patches(patch_args, patch_list): +def parse_patches(patch_args, patch_list, boundary = 0, ordered = False): """Parse patch_args list for patch names in patch_list and return a list. The names can be individual patches and/or in the patch1..patch2 format. @@ -236,12 +236,26 @@ def parse_patches(patch_args, patch_list): if pair[0]: first = patch_list.index(pair[0]) else: - first = 0 + first = -1 # exclusive boundary if pair[1]: last = patch_list.index(pair[1]) + 1 else: - last = len(patch_list) + last = -1 + + # only cross the boundary if explicitly asked + if not boundary: + boundary = len(patch_list) + if first < 0: + if last <= boundary: + first = 0 + else: + first = boundary + if last < 0: + if first < boundary: + last = boundary + else: + last = len(patch_list) if last > first: pl = patch_list[first:last] @@ -257,6 +271,9 @@ def parse_patches(patch_args, patch_list): patches += pl + if ordered: + patches = [p for p in patch_list if p in patches] + return patches def name_email(address): @@ -294,14 +311,15 @@ def patch_name_from_msg(msg): 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'): +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 = 'patch' - if unacceptable(patchname): + patchname = default_name + if alternative and unacceptable(patchname): suffix = 0 while unacceptable('%s-%d' % (patchname, suffix)): suffix += 1