chiark / gitweb /
Merge branch 'stable'
[stgit] / stgit / commands / sync.py
index ee63ec64ec073361d9d9e96c563be095b2b59c2a..0e2c18fbf5c320032f31b8e9c92acc01ecf5f869 100644 (file)
@@ -108,11 +108,11 @@ def func(parser, options, args):
         raise CmdException, 'No remote branch or series specified'
 
     applied = crt_series.get_applied()
+    unapplied = crt_series.get_unapplied()
     
     if options.all:
         patches = applied
     elif len(args) != 0:
-        unapplied = crt_series.get_unapplied()
         patches = parse_patches(args, applied + unapplied, len(applied),
                                 ordered = True)
     elif applied:
@@ -136,11 +136,13 @@ def func(parser, options, args):
         to_pop = applied[applied.index(first_patch) + 1:]
         if to_pop:
             pop_patches(crt_series, to_pop[::-1])
-        popped = patches[patches.index(first_patch) + 1:]
+        pushed = [first_patch]
     else:
-        popped = patches
+        to_pop = []
+        pushed = []
+    popped = to_pop + [p for p in patches if p in unapplied]
 
-    for p in patches:
+    for p in pushed + popped:
         if p in popped:
             # push this patch
             push_patches(crt_series, [p])