From: Catalin Marinas Date: Wed, 14 Jan 2009 22:59:30 GMT Subject: [StGit PATCH] Add --file option to pick Message-ID: <20090114225930.11098.2144.stgit@localhost.localdomain> This allows folding of specific files only. Signed-off-by: Catalin Marinas --- stgit/commands/pick.py | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/stgit/commands/pick.py b/stgit/commands/pick.py index ee08c01..b0e9114 100644 --- a/stgit/commands/pick.py +++ b/stgit/commands/pick.py @@ -52,6 +52,8 @@ options = [ short = 'Fold the commit object into the current patch'), opt('--update', action = 'store_true', short = 'Like fold but only update the current patch files'), + opt('-f', '--files', action = 'append', + short = 'Only fold the given files'), opt('--unapplied', action = 'store_true', short = 'Keep the patch unapplied')] @@ -83,8 +85,11 @@ def __pick_commit(commit_id, patchname, options): out.start('Folding commit %s' % commit_id) # try a direct git apply first - if not git.apply_diff(bottom, top): - git.merge_recursive(bottom, git.get_head(), top) + if not git.apply_diff(bottom, top, files = options.files): + if options.files: + raise CmdException, 'Patch folding failed' + else: + git.merge_recursive(bottom, git.get_head(), top) out.done() elif options.update: @@ -152,6 +157,9 @@ def func(parser, options, args): if not args: parser.error('incorrect number of arguments') + if options.files and not options.fold: + parser.error('--file can only be specified with --fold') + if not options.unapplied: check_local_changes() check_conflicts()