git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[StGit PATCH 5/6] Don't have a global crt_series in stgit.commans.common

From
Karl Hasselström <kha@treskal.com>
Date
Oct 8, 2007, 08:55 UTC
Message-ID
<20071008085535.9734.21876.stgit@yoghurt>
In-Reply-To
<20071008085430.9734.75797.stgit@yoghurt>

Global variables baaad. Instead, pass it as a parameter to the functions that need it.

Signed-off-by: Karl Hasselström <kha@treskal.com>
---
 stgit/commands/branch.py   |    8 ++++----
 stgit/commands/clean.py    |    4 ++--
 stgit/commands/commit.py   |    2 +-
 stgit/commands/common.py   |   22 ++++++++++------------
 stgit/commands/delete.py   |    4 ++--
 stgit/commands/diff.py     |    7 ++++---
 stgit/commands/edit.py     |    6 +++---
 stgit/commands/files.py    |    4 ++--
 stgit/commands/float.py    |    6 +++---
 stgit/commands/fold.py     |    5 +++--
 stgit/commands/goto.py     |    8 ++++----
 stgit/commands/id.py       |    2 +-
 stgit/commands/imprt.py    |    7 ++++---
 stgit/commands/mail.py     |   16 +++++++++-------
 stgit/commands/new.py      |    2 +-
 stgit/commands/pick.py     |   12 ++++++------
 stgit/commands/pop.py      |    8 ++++----
 stgit/commands/pull.py     |   14 +++++++-------
 stgit/commands/push.py     |    8 ++++----
 stgit/commands/rebase.py   |   12 ++++++------
 stgit/commands/refresh.py  |   10 +++++-----
 stgit/commands/series.py   |    5 +++--
 stgit/commands/show.py     |    2 +-
 stgit/commands/sink.py     |    6 +++---
 stgit/commands/sync.py     |    8 ++++----
 stgit/commands/uncommit.py |    2 +-
 stgit/main.py              |    1 -
 27 files changed, 97 insertions(+), 94 deletions(-)
diff --git a/stgit/commands/branch.py b/stgit/commands/branch.py
index 6e0a6d8..cbb97f6 100644
--- a/stgit/commands/branch.py
+++ b/stgit/commands/branch.py
@@ -112,7 +112,7 @@ def func(parser, options, args):
 
         check_local_changes()
         check_conflicts()
-        check_head_top_equal()
+        check_head_top_equal(crt_series)
 
         tree_id = None
         if len(args) >= 2:
@@ -141,7 +141,7 @@ def func(parser, options, args):
                 # exception in branch = rev_parse() leaves branchpoint unbound
                 branchpoint = None
 
-            tree_id = branchpoint or git_id(args[1])
+            tree_id = branchpoint or git_id(crt_series, args[1])
 
             if parentbranch:
                 out.info('Recording "%s" as parent branch' % parentbranch)
@@ -182,7 +182,7 @@ def func(parser, options, args):
 
         check_local_changes()
         check_conflicts()
-        check_head_top_equal()
+        check_head_top_equal(crt_series)
 
         out.start('Cloning current branch to "%s"' % clone)
         crt_series.clone(clone)
@@ -294,7 +294,7 @@ def func(parser, options, args):
 
         check_local_changes()
         check_conflicts()
-        check_head_top_equal()
+        check_head_top_equal(crt_series)
 
         out.start('Switching to branch "%s"' % args[0])
         git.switch_branch(args[0])
diff --git a/stgit/commands/clean.py b/stgit/commands/clean.py
index d8bbe71..4484ecd 100644
--- a/stgit/commands/clean.py
+++ b/stgit/commands/clean.py
@@ -61,7 +61,7 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if not (options.applied or options.unapplied):
         options.applied = options.unapplied = True
@@ -74,4 +74,4 @@ def func(parser, options, args):
         unapplied = crt_series.get_unapplied()
         __delete_empty(unapplied, False)
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/commit.py b/stgit/commands/commit.py
index 2b45c0d..23b4dc1 100644
--- a/stgit/commands/commit.py
+++ b/stgit/commands/commit.py
@@ -45,7 +45,7 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     applied = crt_series.get_applied()
     if not applied:
diff --git a/stgit/commands/common.py b/stgit/commands/common.py
index 652039f..2a80e8c 100644
--- a/stgit/commands/common.py
+++ b/stgit/commands/common.py
@@ -28,8 +28,6 @@ from stgit.run import *
 from stgit import stack, git, basedir
 from stgit.config import config, file_extensions
 
-crt_series = None
-
 
 # Command exception class
 class CmdException(StgException):
@@ -74,7 +72,7 @@ def parse_rev(rev):
     # No, we can't parse that.
     raise RevParseException
 
-def git_id(rev):
+def git_id(crt_series, rev):
     """Return the GIT id
     """
     if not rev:
@@ -112,7 +110,7 @@ def check_local_changes():
         raise CmdException, \
               'local changes in the tree. Use "refresh" or "status --reset"'
 
-def check_head_top_equal():
+def check_head_top_equal(crt_series):
     if not crt_series.head_top_equal():
         raise CmdException(
 """HEAD and top are not the same. This can happen if you
@@ -125,7 +123,7 @@ def check_conflicts():
               'Unsolved conflicts. Please resolve them first or\n' \
               '  revert the changes with "status --reset"'
 
-def print_crt_patch(branch = None):
+def print_crt_patch(crt_series, branch = None):
     if not branch:
         patch = crt_series.get_current()
     else:
@@ -158,7 +156,7 @@ def resolved_all(reset = None):
             resolved(filename, reset)
         os.remove(os.path.join(basedir.get(), 'conflicts'))
 
-def push_patches(patches, check_merged = False):
+def push_patches(crt_series, patches, check_merged = False):
     """Push multiple patches onto the stack. This function is shared
     between the push and pull commands
     """
@@ -197,7 +195,7 @@ def push_patches(patches, check_merged = False):
             else:
                 out.done()
 
-def pop_patches(patches, keep = False):
+def pop_patches(crt_series, patches, keep = False):
     """Pop the patches in the list from the stack. It is assumed that
     the patches are listed in the stack reverse order.
     """
@@ -319,7 +317,7 @@ def address_or_alias(addr_str):
                  for addr in addr_str.split(',')]
     return ', '.join([addr for addr in addr_list if addr])
 
-def prepare_rebase():
+def prepare_rebase(crt_series):
     # pop all patches
     applied = crt_series.get_applied()
     if len(applied) > 0:
@@ -328,9 +326,9 @@ def prepare_rebase():
         out.done()
     return applied
 
-def rebase(target):
+def rebase(crt_series, target):
     try:
-        tree_id = git_id(target)
+        tree_id = git_id(crt_series, target)
     except:
         # it might be that we use a custom rebase command with its own
         # target type
@@ -345,12 +343,12 @@ def rebase(target):
     git.rebase(tree_id = tree_id)
     out.done()
 
-def post_rebase(applied, nopush, merged):
+def post_rebase(crt_series, applied, nopush, merged):
     # memorize that we rebased to here
     crt_series._set_field('orig-base', git.get_head())
     # push the patches back
     if not nopush:
-        push_patches(applied, merged)
+        push_patches(crt_series, applied, merged)
 
 #
 # Patch description/e-mail/diff parsing
diff --git a/stgit/commands/delete.py b/stgit/commands/delete.py
index 8462857..fdb254e 100644
--- a/stgit/commands/delete.py
+++ b/stgit/commands/delete.py
@@ -71,7 +71,7 @@ def func(parser, options, args):
     if applied and not options.branch:
         check_local_changes()
         check_conflicts()
-        check_head_top_equal()
+        check_head_top_equal(crt_series)
 
     # delete the patches
     for patch in applied + patches:
@@ -79,4 +79,4 @@ def func(parser, options, args):
         out.info('Patch "%s" successfully deleted' % patch)
 
     if not options.branch:
-        print_crt_patch()
+        print_crt_patch(crt_series)
diff --git a/stgit/commands/diff.py b/stgit/commands/diff.py
index f3b0ea2..42e8367 100644
--- a/stgit/commands/diff.py
+++ b/stgit/commands/diff.py
@@ -86,9 +86,10 @@ def func(parser, options, args):
         diff_flags = []
 
     if options.stat:
-        out.stdout_raw(git.diffstat(args, git_id(rev1), git_id(rev2)) + '\n')
+        out.stdout_raw(git.diffstat(args, git_id(crt_series, rev1),
+                                    git_id(crt_series, rev2)) + '\n')
     else:
-        diff_str = git.diff(args, git_id(rev1), git_id(rev2),
-                            diff_flags = diff_flags )
+        diff_str = git.diff(args, git_id(crt_series, rev1),
+                            git_id(crt_series, rev2), diff_flags = diff_flags )
         if diff_str:
             pager(diff_str)
diff --git a/stgit/commands/edit.py b/stgit/commands/edit.py
index 02970bc..89d534a 100644
--- a/stgit/commands/edit.py
+++ b/stgit/commands/edit.py
@@ -203,13 +203,13 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if pname != crt_pname:
         # Go to the patch to be edited
         applied = crt_series.get_applied()
         between = applied[:applied.index(pname):-1]
-        pop_patches(between)
+        pop_patches(crt_series, between)
 
     if options.author:
         options.authname, options.authemail = name_email(options.author)
@@ -241,4 +241,4 @@ def func(parser, options, args):
     if pname != crt_pname:
         # Push the patches back
         between.reverse()
-        push_patches(between)
+        push_patches(crt_series, between)
diff --git a/stgit/commands/files.py b/stgit/commands/files.py
index 07cc955..4550251 100644
--- a/stgit/commands/files.py
+++ b/stgit/commands/files.py
@@ -57,8 +57,8 @@ def func(parser, options, args):
     else:
         parser.error('incorrect number of arguments')
 
-    rev1 = git_id('%s//bottom' % patch)
-    rev2 = git_id('%s//top' % patch)
+    rev1 = git_id(crt_series, '%s//bottom' % patch)
+    rev2 = git_id(crt_series, '%s//top' % patch)
 
     if options.stat:
         out.stdout_raw(git.diffstat(rev1 = rev1, rev2 = rev2) + '\n')
diff --git a/stgit/commands/float.py b/stgit/commands/float.py
index d5299fb..6c07136 100644
--- a/stgit/commands/float.py
+++ b/stgit/commands/float.py
@@ -46,7 +46,7 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     unapplied = crt_series.get_unapplied()
     applied = crt_series.get_applied()
@@ -85,7 +85,7 @@ def func(parser, options, args):
     # check whether the operation is really needed
     if topop != topush:
         if topop:
-            pop_patches(topop)
+            pop_patches(crt_series, topop)
         if topush:
             topush.reverse()
-            push_patches(topush)
+            push_patches(crt_series, topush)
diff --git a/stgit/commands/fold.py b/stgit/commands/fold.py
index 6e43101..3930a1f 100644
--- a/stgit/commands/fold.py
+++ b/stgit/commands/fold.py
@@ -50,7 +50,7 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if len(args) == 1:
         filename = args[0]
@@ -74,7 +74,8 @@ def func(parser, options, args):
         bottom = crt_patch.get_bottom()
         git.apply_patch(filename = filename, base = bottom)
     elif options.base:
-        git.apply_patch(filename = filename, base = git_id(options.base))
+        git.apply_patch(filename = filename,
+                        base = git_id(crt_series, options.base))
     else:
         git.apply_patch(filename = filename)
 
diff --git a/stgit/commands/goto.py b/stgit/commands/goto.py
index 9e008a9..e7aa588 100644
--- a/stgit/commands/goto.py
+++ b/stgit/commands/goto.py
@@ -44,7 +44,7 @@ def func(parser, options, args):
         parser.error('incorrect number of arguments')
 
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if not options.keep:
         check_local_changes()
@@ -56,13 +56,13 @@ def func(parser, options, args):
     if patch in applied:
         applied.reverse()
         patches = applied[:applied.index(patch)]
-        pop_patches(patches, options.keep)
+        pop_patches(crt_series, patches, options.keep)
     elif patch in unapplied:
         if options.keep:
             raise CmdException, 'Cannot use --keep with patch pushing'
         patches = unapplied[:unapplied.index(patch)+1]
-        push_patches(patches)
+        push_patches(crt_series, patches)
     else:
         raise CmdException, 'Patch "%s" does not exist' % patch
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/id.py b/stgit/commands/id.py
index 3e28f2f..94b0229 100644
--- a/stgit/commands/id.py
+++ b/stgit/commands/id.py
@@ -48,4 +48,4 @@ def func(parser, options, args):
     else:
         parser.error('incorrect number of arguments')
 
-    out.stdout(git_id(id_str))
+    out.stdout(git_id(crt_series, id_str))
diff --git a/stgit/commands/imprt.py b/stgit/commands/imprt.py
index 045f185..d6e950c 100644
--- a/stgit/commands/imprt.py
+++ b/stgit/commands/imprt.py
@@ -165,7 +165,8 @@ def __create_patch(filename, message, author_name, author_email,
     else:
         out.start('Importing patch "%s"' % patch)
         if options.base:
-            git.apply_patch(diff = diff, base = git_id(options.base))
+            git.apply_patch(diff = diff,
+                            base = git_id(crt_series, options.base))
         else:
             git.apply_patch(diff = diff)
         crt_series.refresh_patch(edit = options.edit,
@@ -270,7 +271,7 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if len(args) == 1:
         filename = args[0]
@@ -286,4 +287,4 @@ def func(parser, options, args):
     else:
         __import_file(filename, options)
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py
index 4a4158a..883a4f3 100644
--- a/stgit/commands/mail.py
+++ b/stgit/commands/mail.py
@@ -350,8 +350,8 @@ def __build_cover(tmpl, patches, msg_id, options):
                  'shortlog':     stack.shortlog(crt_series.get_patch(p)
                                                 for p in patches),
                  'diffstat':     git.diffstat(
-                                     rev1 = git_id('%s//bottom' % patches[0]),
-                                     rev2 = git_id('%s//top' % patches[-1]))}
+                     rev1 = git_id(crt_series, '%s//bottom' % patches[0]),
+                     rev2 = git_id(crt_series, '%s//top' % patches[-1]))}
 
     try:
         msg_string = tmpl % tmpl_dict
@@ -435,11 +435,13 @@ def __build_message(tmpl, patch, patch_nr, total_nr, msg_id, ref_id, options):
                  'longdescr':    long_descr,
                  # for backward template compatibility
                  'endofheaders': '',
-                 'diff':         git.diff(rev1 = git_id('%s//bottom' % patch),
-                                          rev2 = git_id('%s//top' % patch),
-                                          diff_flags = diff_flags ),
-                 'diffstat':     git.diffstat(rev1 = git_id('%s//bottom'%patch),
-                                              rev2 = git_id('%s//top' % patch)),
+                 'diff':         git.diff(
+                     rev1 = git_id(crt_series, '%s//bottom' % patch),
+                     rev2 = git_id(crt_series, '%s//top' % patch),
+                     diff_flags = diff_flags),
+                 'diffstat':     git.diffstat(
+                     rev1 = git_id(crt_series, '%s//bottom'%patch),
+                     rev2 = git_id(crt_series, '%s//top' % patch)),
                  # for backward template compatibility
                  'date':         '',
                  'version':      version_str,
diff --git a/stgit/commands/new.py b/stgit/commands/new.py
index ccc8141..b0a57d1 100644
--- a/stgit/commands/new.py
+++ b/stgit/commands/new.py
@@ -70,7 +70,7 @@ def func(parser, options, args):
         parser.error('incorrect number of arguments')
 
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if options.author:
         options.authname, options.authemail = name_email(options.author)
diff --git a/stgit/commands/pick.py b/stgit/commands/pick.py
index 3acec32..1fcc2e2 100644
--- a/stgit/commands/pick.py
+++ b/stgit/commands/pick.py
@@ -65,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:
@@ -84,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()
 
@@ -104,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)
@@ -163,4 +163,4 @@ def func(parser, options, args):
         else:
             out.done()
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/pop.py b/stgit/commands/pop.py
index a1d73e4..246cc34 100644
--- a/stgit/commands/pop.py
+++ b/stgit/commands/pop.py
@@ -51,7 +51,7 @@ def func(parser, options, args):
     """Pop the topmost patch from the stack
     """
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if not options.keep:
         check_local_changes()
@@ -83,8 +83,8 @@ def func(parser, options, args):
         raise CmdException, 'Cannot pop arbitrary patches with --keep'
 
     topop.reverse()
-    pop_patches(topop, options.keep)
+    pop_patches(crt_series, topop, options.keep)
     if topush:
-        push_patches(topush)
+        push_patches(crt_series, topush)
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/pull.py b/stgit/commands/pull.py
index 5fcf2cc..e5ee17d 100644
--- a/stgit/commands/pull.py
+++ b/stgit/commands/pull.py
@@ -74,12 +74,12 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     if policy not in ['pull', 'fetch-rebase', 'rebase']:
         raise GitConfigException, 'Unsupported pull-policy "%s"' % policy
 
-    applied = prepare_rebase()
+    applied = prepare_rebase(crt_series)
 
     # pull the remote changes
     if policy == 'pull':
@@ -92,17 +92,17 @@ def func(parser, options, args):
             target = git.fetch_head()
         except git.GitException:
             out.error('Could not find the remote head to rebase onto, pushing any patches back...')
-            post_rebase(applied, False, False)
+            post_rebase(crt_series, applied, False, False)
             raise CmdException, 'Could not find the remote head to rebase onto - fix branch.%s.merge in .git/config' % crt_series.get_name()
 
-        rebase(target)
+        rebase(crt_series, target)
     elif policy == 'rebase':
-        rebase(crt_series.get_parent_branch())
+        rebase(crt_series, crt_series.get_parent_branch())
 
-    post_rebase(applied, options.nopush, options.merged)
+    post_rebase(crt_series, applied, options.nopush, options.merged)
 
     # maybe tidy up
     if config.get('stgit.keepoptimized') == 'yes':
         git.repack()
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/push.py b/stgit/commands/push.py
index 4d5de26..979835b 100644
--- a/stgit/commands/push.py
+++ b/stgit/commands/push.py
@@ -72,13 +72,13 @@ def func(parser, options, args):
             out.done()
         else:
             out.done('patch unchanged')
-        print_crt_patch()
+        print_crt_patch(crt_series)
 
         return
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     unapplied = crt_series.get_unapplied()
     if not unapplied:
@@ -99,6 +99,6 @@ def func(parser, options, args):
     if options.reverse:
         patches.reverse()
 
-    push_patches(patches, options.merged)
+    push_patches(crt_series, patches, options.merged)
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/rebase.py b/stgit/commands/rebase.py
index bbb3e12..c4d74b7 100644
--- a/stgit/commands/rebase.py
+++ b/stgit/commands/rebase.py
@@ -48,14 +48,14 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     # ensure an exception is raised before popping on non-existent target
-    if git_id(args[0]) == None:
+    if git_id(crt_series, args[0]) == None:
         raise GitException, 'Unknown revision: %s' % args[0]
         
-    applied = prepare_rebase()
-    rebase(args[0])
-    post_rebase(applied, options.nopush, options.merged)
+    applied = prepare_rebase(crt_series)
+    rebase(crt_series, args[0])
+    post_rebase(crt_series, applied, options.nopush, options.merged)
 
-    print_crt_patch()
+    print_crt_patch(crt_series)
diff --git a/stgit/commands/refresh.py b/stgit/commands/refresh.py
index f032375..7cde392 100644
--- a/stgit/commands/refresh.py
+++ b/stgit/commands/refresh.py
@@ -73,7 +73,7 @@ def func(parser, options, args):
             raise CmdException, 'No patches applied'
 
     if not options.force:
-        check_head_top_equal()
+        check_head_top_equal(crt_series)
 
     if options.undo:
         out.start('Undoing the refresh of "%s"' % patch)
@@ -89,10 +89,10 @@ def func(parser, options, args):
         if options.patch:
             applied = crt_series.get_applied()
             between = applied[:applied.index(patch):-1]
-            pop_patches(between, keep = True)
+            pop_patches(crt_series, between, keep = True)
         elif options.update:
-            rev1 = git_id('//bottom')
-            rev2 = git_id('//top')
+            rev1 = git_id(crt_series, '//bottom')
+            rev2 = git_id(crt_series, '//top')
             patch_files = git.barefiles(rev1, rev2).split('\n')
             files = [f for f in files if f in patch_files]
             if not files:
@@ -113,7 +113,7 @@ def func(parser, options, args):
 
         if options.patch:
             between.reverse()
-            push_patches(between)
+            push_patches(crt_series, between)
     elif options.annotate:
         # only annotate the top log entry as there is no need to
         # refresh the patch and generate a full commit
diff --git a/stgit/commands/series.py b/stgit/commands/series.py
index 2c75876..4c6d07e 100644
--- a/stgit/commands/series.py
+++ b/stgit/commands/series.py
@@ -195,12 +195,13 @@ def func(parser, options, args):
             raise CmdException, '--graphical not supported with --missing'
 
         if applied:
-            gitk_args = ' %s^..%s' % (git_id(applied[0]), git_id(applied[-1]))
+            gitk_args = ' %s^..%s' % (git_id(crt_series, applied[0]),
+                                      git_id(crt_series, applied[-1]))
         else:
             gitk_args = ''
 
         for p in unapplied:
-            patch_id = git_id(p)
+            patch_id = git_id(crt_series, p)
             gitk_args += ' %s^..%s' % (patch_id, patch_id)
 
         if os.system('gitk%s' % gitk_args) != 0:
diff --git a/stgit/commands/show.py b/stgit/commands/show.py
index 7efb4e1..e4e70a5 100644
--- a/stgit/commands/show.py
+++ b/stgit/commands/show.py
@@ -69,7 +69,7 @@ def func(parser, options, args):
     else:
         diff_flags = []
 
-    commit_ids = [git_id(patch) for patch in patches]
+    commit_ids = [git_id(crt_series, patch) for patch in patches]
     commit_str = '\n'.join([git.pretty_commit(commit_id, diff_flags=diff_flags)
                             for commit_id in commit_ids])
     if commit_str:
diff --git a/stgit/commands/sink.py b/stgit/commands/sink.py
index 737dde0..b177337 100644
--- a/stgit/commands/sink.py
+++ b/stgit/commands/sink.py
@@ -45,7 +45,7 @@ def func(parser, options, args):
 
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
     oldapplied = crt_series.get_applied()
     unapplied = crt_series.get_unapplied()
@@ -61,10 +61,10 @@ def func(parser, options, args):
         patches = [ crt_series.get_current() ]
 
     crt_series.pop_patch(options.to or oldapplied[0])
-    push_patches(patches)
+    push_patches(crt_series, patches)
 
     if not options.nopush:
         newapplied = crt_series.get_applied()
         def not_reapplied_yet(p):
             return not p in newapplied
-        push_patches(filter(not_reapplied_yet, oldapplied))
+        push_patches(crt_series, filter(not_reapplied_yet, oldapplied))
diff --git a/stgit/commands/sync.py b/stgit/commands/sync.py
index 8a31c29..6066f82 100644
--- a/stgit/commands/sync.py
+++ b/stgit/commands/sync.py
@@ -51,7 +51,7 @@ options = [make_option('-a', '--all',
 def __check_all():
     check_local_changes()
     check_conflicts()
-    check_head_top_equal()
+    check_head_top_equal(crt_series)
 
 def __branch_merge_patch(remote_series, pname):
     """Merge a patch from a remote branch into the current tree.
@@ -131,13 +131,13 @@ def func(parser, options, args):
     # pop to the one before the first patch to be synchronised
     popped = applied[applied.index(sync_patches[0]) + 1:]
     if popped:
-        pop_patches(popped[::-1])
+        pop_patches(crt_series, popped[::-1])
 
     for p in sync_patches:
         if p in popped:
             # push to this patch
             idx = popped.index(p) + 1
-            push_patches(popped[:idx])
+            push_patches(crt_series, popped[:idx])
             del popped[:idx]
 
         # the actual sync
@@ -166,4 +166,4 @@ def func(parser, options, args):
 
     # push the remaining patches
     if popped:
-        push_patches(popped)
+        push_patches(crt_series, popped)
diff --git a/stgit/commands/uncommit.py b/stgit/commands/uncommit.py
index a23ae20..8e62d23 100644
--- a/stgit/commands/uncommit.py
+++ b/stgit/commands/uncommit.py
@@ -66,7 +66,7 @@ def func(parser, options, args):
         if len(args) != 0:
             parser.error('cannot specify patch name with --to')
         patch_nr = patchnames = None
-        to_commit = git_id(options.to)
+        to_commit = git_id(crt_series, options.to)
     elif options.number:
         if options.number <= 0:
             parser.error('invalid value passed to --number')
diff --git a/stgit/main.py b/stgit/main.py
index db327f1..e8242c2 100644
--- a/stgit/main.py
+++ b/stgit/main.py
@@ -277,7 +277,6 @@ def main():
                 command.crt_series = Series(options.branch)
             else:
                 command.crt_series = Series()
-            stgit.commands.common.crt_series = command.crt_series
 
         command.func(parser, options, args)
     except (StgException, IOError, ParsingError, NoSectionError), err:
Previous: Karl HasselströmNext: Karl Hasselström
Message 6 of 12 in “Survive capital punishment”
  1. 0/6 Survive capital punishmentKarl Hasselström, Oct 8, 2007
  2. 1/6 Allow caller to customize title of error/warning messageKarl Hasselström, Oct 8, 2007
  3. 2/6 Use our nice message printout wrapping systemKarl Hasselström, Oct 8, 2007
  4. 3/6 Properly detect that HEAD is detachedKarl Hasselström, Oct 8, 2007
  5. 4/6 Refactor crt_series creationKarl Hasselström, Oct 8, 2007
  6. 5/6 Don't have a global crt_series in stgit.commans.commonKarl Hasselström, Oct 8, 2007
  7. 6/6 Let some commands work with detached HEADKarl Hasselström, Oct 8, 2007
  8. Karl HasselströmOct 8, 2007
  9. New test: "stg diff"Karl Hasselström, Oct 9, 2007
  10. Karl HasselströmOct 9, 2007
  11. Karl HasselströmOct 8, 2007
  12. Karl HasselströmOct 8, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.