It deletes the patches as usual, but doesn't touch index+worktree.
Useful for splitting up a patch, or undoing an "stg refresh".
Signed-off-by: Karl Hasselström <kha@treskal.com>
args = [argparse.patch_range(argparse.applied_patches,
argparse.unapplied_patches)]
options = [
args = [argparse.patch_range(argparse.applied_patches,
argparse.unapplied_patches)]
options = [
+ opt('--spill', action = 'store_true',
+ short = 'Spill patch contents to worktree and index', long = """
+ Delete the patches, but do not touch the index and worktree.
+ This only works with applied patches at the top of the stack.
+ The effect is to "spill" the patch contents into the index and
+ worktree. This can be useful e.g. if you want to split a patch
+ into several smaller pieces."""),
opt('-b', '--branch', args = [argparse.stg_branches],
short = 'Use BRANCH instead of the default branch')]
opt('-b', '--branch', args = [argparse.stg_branches],
short = 'Use BRANCH instead of the default branch')]
patches = set(common.parse_patches(args, list(stack.patchorder.all)))
else:
parser.error('No patches specified')
patches = set(common.parse_patches(args, list(stack.patchorder.all)))
else:
parser.error('No patches specified')
+
+ if options.spill:
+ if set(stack.patchorder.applied[-len(patches):]) != patches:
+ parser.error('Can only spill topmost applied patches')
+ iw = None # don't touch index+worktree
+
def allow_conflicts(trans):
# Allow conflicts if the topmost patch stays the same.
if stack.patchorder.applied:
def allow_conflicts(trans):
# Allow conflicts if the topmost patch stays the same.
if stack.patchorder.applied: