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 0002_yyy.patch Args: col (terminal.Color): Colour output object branch (str): Branch to create patches from (None = current) 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: Tuple: Series object for this series (set of patches) Filename of the cover letter as a string (None if none) patch_files: List of patch filenames, each a string, e.g. ['0001_xxx.patch', '0002_yyy.patch'] """ if count == -1: # Work out how many patches to send if we can count = (gitutil.CountCommitsToBranch(branch) - start) if not count: str = 'No commits found to process - please use -c flag, or run:\n' \ ' git branch --set-upstream-to remote/branch' sys.exit(col.Color(col.RED, str)) # Read the metadata from the commits to_do = count - end series = patchstream.GetMetaData(branch, start, to_do) cover_fname, patch_files = gitutil.CreatePatches(branch, start, to_do, ignore_binary, series) # Fix up the patch files to our liking, and insert the cover letter patchstream.FixPatches(series, patch_files) if cover_fname and series.get('cover'): patchstream.InsertCoverLetter(cover_fname, series, to_do) return series, cover_fname, patch_files
# Process commits, produce patches files, check them, email them else: gitutil.Setup() if options.count == -1: # Work out how many patches to send if we can options.count = gitutil.CountCommitsToBranch() - options.start col = terminal.Color() if not options.count: str = 'No commits found to process - please use -c flag' sys.exit(col.Color(col.RED, str)) # Read the metadata from the commits if options.count: series = patchstream.GetMetaData(options.start, options.count) cover_fname, args = gitutil.CreatePatches(options.start, options.count, series) # Fix up the patch files to our liking, and insert the cover letter patchstream.FixPatches(series, args) if cover_fname and series.get('cover'): patchstream.InsertCoverLetter(cover_fname, series, options.count) # Do a few checks on the series series.DoChecks() # Check the patches, and run them through 'git am' just to be sure if options.check_patch: ok = checkpatch.CheckPatches(options.verbose, args) else: