threads / patch / 17181

patchAdd --file option to pick

Subject: [StGit PATCH] Add --file option to pick

## tl;dr

2 messages between Jan 14, 2009 and Jan 15, 2009. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Catalin Marinas· Jan 14, 2009, 22:59 UTC · lore
This allows folding of specific files only.
Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
---
 stgit/commands/pick.py |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
Show changes to stgit/commands/pick.py +10 −2
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()
Karl Hasselström· Jan 15, 2009, 08:26 UTC · re: Catalin Marinas · lore

Re: [StGit PATCH] Add --file option to pick

On 2009-01-14 22:59:30 +0000, Catalin Marinas wrote:
> +    opt('-f', '--files', action = 'append',
> +        short = 'Only fold the given files'),

The long form should probably be "--file", since you only list one file for every flag (and since you call it "--file" in the last hunk). And the help text could be something like

  Only fold the given file (for multiple files, use -f more than once)
> +                raise CmdException, 'Patch folding failed'

This is not important, but I believe the recommended syntax for raising exceptions nowadays is

  CmdException('Patch folding failed')

since that's what'll continue to work in Python 3, or something like that. (I see you already use it in the multi-line case in the other patch, where this syntax is clearly the better choice.)

-- 
Karl Hasselström, kha@treskal.com
      www.treskal.com/kalle

← back to recent threads