Release 0.8
[stgit] / stgit / commands / pick.py
index 0f2c40a..c01c799 100644 (file)
@@ -59,12 +59,12 @@ def func(parser, options, args):
             raise CmdException, 'No patches applied'
     else:
         patch_branch = commit_str.split('@')
-        if len(patch_branch) == 2:
-            patch = patch_branch[0]
-        elif options.name:
+        if options.name:
             patch = options.name
+        elif len(patch_branch) == 2:
+            patch = patch_branch[0]
         else:
-            raise CmdException, 'Unkown patch name'
+            raise CmdException, 'Unknown patch name'
 
     commit_id = git_id(commit_str)
     commit = git.Commit(commit_id)
@@ -80,7 +80,11 @@ def func(parser, options, args):
         print 'Folding commit %s...' % commit_id,
         sys.stdout.flush()
 
-        git.merge(bottom, git.get_head(), top)
+        # try a direct git-apply first
+        if not git.apply_diff(bottom, top):
+            git.merge(bottom, git.get_head(), top)
+
+        print 'done'
     else:
         message = commit.get_log()
         author_name, author_email, author_date = \
@@ -94,8 +98,13 @@ def func(parser, options, args):
                              author_name = author_name,
                              author_email = author_email,
                              author_date = author_date)
-        crt_series.push_patch(patch)
+        modified = crt_series.push_patch(patch)
 
-    print 'done'
+        if crt_series.empty_patch(patch):
+            print 'done (empty patch)'
+        elif modified:
+            print 'done (modified)'
+        else:
+            print 'done'
         
     print_crt_patch()