From 6a093bbbfc2b933a78253ea23287a411631565c5 Mon Sep 17 00:00:00 2001 From: Catalin Marinas Date: Tue, 27 Sep 2005 21:27:33 +0100 Subject: [PATCH] Add a commit command to merge the current patches into base By default, the base is only advanced by 'stg pull'. A commit command would allow the currently applied patches to be merged into the base and removed from the current series. This commands adds a bit of SCM flavour to StGIT. Signed-off-by: Catalin Marinas --- stgit/commands/commit.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ stgit/main.py | 2 ++ 2 files changed, 64 insertions(+) create mode 100644 stgit/commands/commit.py diff --git a/stgit/commands/commit.py b/stgit/commands/commit.py new file mode 100644 index 0000000..ec3de72 --- /dev/null +++ b/stgit/commands/commit.py @@ -0,0 +1,62 @@ +__copyright__ = """ +Copyright (C) 2005, Catalin Marinas + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +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 optparse import OptionParser, make_option + +from stgit.commands.common import * +from stgit.utils import * +from stgit import stack, git + +help = 'permanently store the applied patches into stack base' +usage = """%prog [options] + +Merge the applied patches into the base of the current stack and +remove them from the series while advancing the base. + +Use this command only if you want to permanently store the applied +patches and no longer manage them with StGIT.""" + +options = [] + + +def func(parser, options, args): + """Merge the applied patches into the base of the current stack + and remove them from the series while advancing the base + """ + if len(args) != 0: + parser.error('incorrect number of arguments') + + check_local_changes() + check_conflicts() + check_head_top_equal() + + applied = crt_series.get_applied() + if not applied: + raise CmdException, 'No patches applied' + + crt_head = git.get_head() + + print 'Committing %d patches...' % len(applied), + + crt_series.pop_patch(applied[0]) + git.switch(crt_head) + + for patch in applied: + crt_series.delete_patch(patch) + + print 'done' diff --git a/stgit/main.py b/stgit/main.py index 857e60b..0b19e63 100644 --- a/stgit/main.py +++ b/stgit/main.py @@ -34,6 +34,7 @@ import stgit.commands.delete import stgit.commands.diff import stgit.commands.clean import stgit.commands.clone +import stgit.commands.commit import stgit.commands.export import stgit.commands.files import stgit.commands.fold @@ -66,6 +67,7 @@ commands = { 'diff': stgit.commands.diff, 'clean': stgit.commands.clean, 'clone': stgit.commands.clone, + 'commit': stgit.commands.commit, 'export': stgit.commands.export, 'files': stgit.commands.files, 'fold': stgit.commands.fold, -- 2.11.0