Make sure the refid given to 'mail' has the angle brackets
[stgit] / stgit / commands / pick.py
index a47b201..5b45434 100644 (file)
@@ -20,6 +20,7 @@ from optparse import OptionParser, make_option
 
 from stgit.commands.common import *
 from stgit.utils import *
+from stgit.out import *
 from stgit import stack, git
 from stgit.stack import Series
 
@@ -33,6 +34,7 @@ the name of the current patch. It can be overridden with the '--name'
 option. A commit object can be reverted with the '--reverse'
 option. The log and author information are those of the commit object."""
 
+directory = DirectoryGotoToplevel()
 options = [make_option('-n', '--name',
                        help = 'use NAME as the patch name'),
            make_option('-r', '--reverse',
@@ -40,6 +42,9 @@ options = [make_option('-n', '--name',
                        action = 'store_true'),
            make_option('-p', '--parent', metavar = 'COMMITID',
                        help = 'use COMMITID as parent'),
+           make_option('-x', '--expose',
+                       help = 'append the imported commit id to the patch log',
+                       action = 'store_true'),
            make_option('--fold',
                        help = 'fold the commit object into the current patch',
                        action = 'store_true'),
@@ -60,10 +65,10 @@ def func(parser, options, args):
     if not options.unapplied:
         check_local_changes()
         check_conflicts()
-        check_head_top_equal()
+        check_head_top_equal(crt_series)
 
     commit_str = args[0]
-    commit_id = git_id(commit_str)
+    commit_id = git_id(crt_series, commit_str)
     commit = git.Commit(commit_id)
 
     if options.fold or options.update:
@@ -79,7 +84,7 @@ def func(parser, options, args):
             patchname = None
 
     if options.parent:
-        parent = git_id(options.parent)
+        parent = git_id(crt_series, options.parent)
     else:
         parent = commit.get_parent()
 
@@ -99,8 +104,8 @@ def func(parser, options, args):
 
         out.done()
     elif options.update:
-        rev1 = git_id('//bottom')
-        rev2 = git_id('//top')
+        rev1 = git_id(crt_series, '//bottom')
+        rev2 = git_id(crt_series, '//top')
         files = git.barefiles(rev1, rev2).split('\n')
 
         out.start('Updating with commit %s' % commit_id)
@@ -111,6 +116,8 @@ def func(parser, options, args):
         out.done()
     else:
         message = commit.get_log()
+        if options.expose:
+            message += '(imported from commit %s)\n' % commit.get_id_hash()
         author_name, author_email, author_date = \
                      name_email_date(commit.get_author())
 
@@ -121,6 +128,9 @@ def func(parser, options, args):
                                         author_name = author_name,
                                         author_email = author_email,
                                         author_date = author_date)
+        # in case the patch name was automatically generated
+        patchname = newpatch.get_name()
+
         # find a patchlog to fork from
         (refpatchname, refbranchname, refpatchid) = parse_rev(commit_str)
         if refpatchname and not refpatchid and \
@@ -153,4 +163,4 @@ def func(parser, options, args):
         else:
             out.done()
 
-    print_crt_patch()
+    print_crt_patch(crt_series)