summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/patman/control.py8
-rw-r--r--tools/patman/func_test.py13
-rwxr-xr-xtools/patman/main.py2
3 files changed, 18 insertions, 5 deletions
diff --git a/tools/patman/control.py b/tools/patman/control.py
index b48eac41fd..b481ff6b27 100644
--- a/tools/patman/control.py
+++ b/tools/patman/control.py
@@ -20,7 +20,7 @@ def setup():
"""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
@@ -32,6 +32,8 @@ def prepare_patches(col, branch, count, start, ignore_binary):
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:
@@ -50,7 +52,7 @@ def prepare_patches(col, branch, count, start, ignore_binary):
'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)
@@ -159,7 +161,7 @@ def send(options):
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)
diff --git a/tools/patman/func_test.py b/tools/patman/func_test.py
index 588be73ef4..810af9c604 100644
--- a/tools/patman/func_test.py
+++ b/tools/patman/func_test.py
@@ -430,7 +430,8 @@ complicated as possible''')
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))
@@ -438,9 +439,17 @@ complicated as possible''')
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)
diff --git a/tools/patman/main.py b/tools/patman/main.py
index 066754196e..4d7a3044ea 100755
--- a/tools/patman/main.py
+++ b/tools/patman/main.py
@@ -35,6 +35,8 @@ parser.add_option('-b', '--branch', type='str',
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')