From: Catalin Marinas <catalin.marinas@arm.com>
To: git@vger.kernel.org, "Karl Hasselström" <kha@treskal.com>
Subject: [StGit PATCH] Convert "push" to the lib infrastructure
Date: Tue, 31 Mar 2009 12:30:33 +0100 [thread overview]
Message-ID: <20090331113033.2524.27502.stgit@pc1117.cambridge.arm.com> (raw)
Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
---
stgit/commands/push.py | 68 ++++++++++++++++++++++++----------------------
t/t0002-status.sh | 2 +
t/t1200-push-modified.sh | 2 +
t/t1202-push-undo.sh | 4 +--
t/t1203-push-conflict.sh | 2 +
t/t1205-push-subdir.sh | 2 +
t/t2500-clean.sh | 2 +
7 files changed, 43 insertions(+), 39 deletions(-)
diff --git a/stgit/commands/push.py b/stgit/commands/push.py
index 818e02d..0d25a65 100644
--- a/stgit/commands/push.py
+++ b/stgit/commands/push.py
@@ -16,12 +16,10 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
-import sys, os
+from stgit.commands import common
+from stgit.lib import transaction
+from stgit import argparse
from stgit.argparse import opt
-from stgit.commands.common import *
-from stgit.utils import *
-from stgit.out import *
-from stgit import argparse, stack, git
help = 'Push one or more patches onto the stack'
kind = 'stack'
@@ -45,39 +43,45 @@ options = [
opt('-n', '--number', type = 'int',
short = 'Push the specified number of patches'),
opt('--reverse', action = 'store_true',
- short = 'Push the patches in reverse order'),
- opt('-m', '--merged', action = 'store_true',
- short = 'Check for patches merged upstream')]
+ short = 'Push the patches in reverse order')
+ ] + argparse.keep_option() + argparse.merged_option()
-directory = DirectoryGotoToplevel(log = True)
+directory = common.DirectoryHasRepositoryLib()
def func(parser, options, args):
- """Pushes the given patch or all onto the series
- """
-
- check_local_changes()
- check_conflicts()
- check_head_top_equal(crt_series)
-
- unapplied = crt_series.get_unapplied()
- if not unapplied:
- raise CmdException, 'No more patches to push'
-
- if options.number:
- patches = unapplied[:options.number]
- elif options.all:
- patches = unapplied
- elif len(args) == 0:
- patches = [unapplied[0]]
+ """Pushes the given patches or the first unapplied onto the stack."""
+ stack = directory.repository.current_stack
+ iw = stack.repository.default_iw
+ clean_iw = (not options.keep and iw) or None
+ trans = transaction.StackTransaction(stack, 'pop',
+ check_clean_iw = clean_iw)
+
+ if not trans.unapplied:
+ raise common.CmdException('No patches to push')
+
+ if options.all:
+ patches = list(trans.unapplied)
+ elif options.number:
+ patches = trans.unapplied[:options.number]
+ elif not args:
+ patches = [trans.unapplied[0]]
else:
- patches = parse_patches(args, unapplied)
+ patches = common.parse_patches(args, trans.unapplied)
- if patches == []:
- raise CmdException, 'No patches to push'
+ if not patches:
+ raise common.CmdException('No patches to push')
if options.reverse:
patches.reverse()
- push_patches(crt_series, patches, options.merged)
-
- print_crt_patch(crt_series)
+ try:
+ if options.merged:
+ merged = set(trans.check_merged(patches))
+ else:
+ merged = set()
+ for pn in patches:
+ trans.push_patch(pn, iw, allow_interactive = True,
+ already_merged = pn in merged)
+ except transaction.TransactionHalted:
+ pass
+ return trans.run(iw)
diff --git a/t/t0002-status.sh b/t/t0002-status.sh
index d95a83b..ffcad77 100755
--- a/t/t0002-status.sh
+++ b/t/t0002-status.sh
@@ -111,7 +111,7 @@ A fie
C foo/bar
EOF
test_expect_success 'Status after conflicting push' '
- conflict_old stg push &&
+ conflict stg push &&
stg status > output.txt &&
test_cmp expected.txt output.txt
'
diff --git a/t/t1200-push-modified.sh b/t/t1200-push-modified.sh
index a591124..2077492 100755
--- a/t/t1200-push-modified.sh
+++ b/t/t1200-push-modified.sh
@@ -49,7 +49,7 @@ test_expect_success \
test_expect_success \
'Attempt to push the first of those patches without --merged' \
- "(cd bar && conflict_old stg push
+ "(cd bar && conflict stg push
)
"
diff --git a/t/t1202-push-undo.sh b/t/t1202-push-undo.sh
index 79439de..14a3d6d 100755
--- a/t/t1202-push-undo.sh
+++ b/t/t1202-push-undo.sh
@@ -43,7 +43,7 @@ test_expect_success \
test_expect_success \
'Push the second patch with conflict' \
'
- conflict_old stg push bar
+ conflict stg push bar
'
test_expect_success \
@@ -55,7 +55,7 @@ test_expect_success \
test_expect_success \
'Check the push after undo fails as well' \
'
- conflict_old stg push bar
+ conflict stg push bar
'
test_expect_success \
diff --git a/t/t1203-push-conflict.sh b/t/t1203-push-conflict.sh
index 96fee15..8027e6c 100755
--- a/t/t1203-push-conflict.sh
+++ b/t/t1203-push-conflict.sh
@@ -38,7 +38,7 @@ test_expect_success \
test_expect_success \
'Push the first patch with conflict' \
'
- conflict_old stg push foo
+ conflict stg push foo
'
test_expect_success \
diff --git a/t/t1205-push-subdir.sh b/t/t1205-push-subdir.sh
index f852762..2d5918b 100755
--- a/t/t1205-push-subdir.sh
+++ b/t/t1205-push-subdir.sh
@@ -47,7 +47,7 @@ test_expect_success 'Conflicting push from subdir' '
[ "$(echo $(cat x.txt))" = "x0" ] &&
[ "$(echo $(cat foo/y.txt))" = "y0" ] &&
cd foo &&
- conflict_old stg push p2 &&
+ conflict stg push p2 &&
cd .. &&
[ "$(echo $(stg status --conflict))" = "foo/y.txt x.txt" ]
'
diff --git a/t/t2500-clean.sh b/t/t2500-clean.sh
index 99fd29f..7f821f5 100755
--- a/t/t2500-clean.sh
+++ b/t/t2500-clean.sh
@@ -32,7 +32,7 @@ test_expect_success 'Create a conflict' '
stg new p2 -m p2
echo quux > foo.txt &&
stg refresh &&
- conflict_old stg push
+ conflict stg push
'
test_expect_success 'Make sure conflicting patches are preserved' '
next reply other threads:[~2009-03-31 11:33 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-31 11:30 Catalin Marinas [this message]
2009-04-01 12:06 ` [StGit PATCH] Convert "push" to the lib infrastructure Karl Hasselström
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090331113033.2524.27502.stgit@pc1117.cambridge.arm.com \
--to=catalin.marinas@arm.com \
--cc=catalin.marinas@gmail.com \
--cc=git@vger.kernel.org \
--cc=kha@treskal.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox