"""Do required setup before doing anything"""
gitutil.Setup()
-def prepare_patches(col, branch, count, start, ignore_binary):
+def prepare_patches(col, branch, count, start, end, ignore_binary):
"""Figure out what patches to generate, then generate them
The patch files are written to the current directory, e.g. 0001_xxx.patch
count (int): Number of patches to produce, or -1 to produce patches for
the current branch back to the upstream commit
start (int): Start partch to use (0=first / top of branch)
+ end (int): End patch to use (0=last one in series, 1=one before that,
+ etc.)
ignore_binary (bool): Don't generate patches for binary files
Returns:
'No commits found to process - please use -c flag'))
# Read the metadata from the commits
- to_do = count
+ to_do = count - end
series = patchstream.GetMetaData(branch, start, to_do)
cover_fname, patch_files = gitutil.CreatePatches(
branch, start, to_do, ignore_binary, series)
setup()
col = terminal.Color()
series, cover_fname, patch_files = prepare_patches(
- col, options.branch, options.count, options.start,
+ col, options.branch, options.count, options.start, options.end,
options.ignore_binary)
ok = check_patches(series, patch_files, options.check_patch,
options.verbose)
col = terminal.Color()
with capture_sys_output() as _:
_, cover_fname, patch_files = control.prepare_patches(
- col, branch=None, count=-1, start=0, ignore_binary=False)
+ col, branch=None, count=-1, start=0, end=0,
+ ignore_binary=False)
self.assertIsNone(cover_fname)
self.assertEqual(2, len(patch_files))
self.assertEqual(3, gitutil.CountCommitsToBranch('second'))
with capture_sys_output() as _:
_, cover_fname, patch_files = control.prepare_patches(
- col, branch='second', count=-1, start=0,
+ col, branch='second', count=-1, start=0, end=0,
ignore_binary=False)
self.assertIsNotNone(cover_fname)
self.assertEqual(3, len(patch_files))
+
+ # Check that it can skip patches at the end
+ with capture_sys_output() as _:
+ _, cover_fname, patch_files = control.prepare_patches(
+ col, branch='second', count=-1, start=0, end=1,
+ ignore_binary=False)
+ self.assertIsNotNone(cover_fname)
+ self.assertEqual(2, len(patch_files))
finally:
os.chdir(orig_dir)
help="Branch to process (by default, the current branch)")
parser.add_option('-c', '--count', dest='count', type='int',
default=-1, help='Automatically create patches from top n commits')
+parser.add_option('-e', '--end', type='int', default=0,
+ help='Commits to skip at end of patch list')
parser.add_option('-i', '--ignore-errors', action='store_true',
dest='ignore_errors', default=False,
help='Send patches email even if patch errors are found')