X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/bae29dddde41058567a5ef9b44c160dd76b1c025..1f5b9c9a8202a1fd62cc0c88d17de681c1e85a62:/stgit/commands/branch.py diff --git a/stgit/commands/branch.py b/stgit/commands/branch.py index ccf1f6b..6a551e4 100644 --- a/stgit/commands/branch.py +++ b/stgit/commands/branch.py @@ -18,7 +18,7 @@ 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 +import sys, os, time from optparse import OptionParser, make_option from stgit.commands.common import * @@ -29,17 +29,22 @@ from stgit import stack, git help = 'manage development branches' usage = """%prog [options] branch-name [commit-id] -Create, list, switch between, rename, or delete development branches +Create, clone, switch between, rename, or delete development branches within a git repository. By default, a single branch called 'master' is always created in a new repository. This subcommand allows you to -manage several patch series in the same repository. +manage several patch series in the same repository via GIT branches. When displaying the branches, the names can be prefixed with -'s' (StGIT managed) or 'p' (protected).""" +'s' (StGIT managed) or 'p' (protected). + +If not given any options, switch to the named branch.""" options = [make_option('-c', '--create', help = 'create a new development branch', action = 'store_true'), + make_option('--clone', + help = 'clone the contents of the current branch', + action = 'store_true'), make_option('--delete', help = 'delete an existing development branch', action = 'store_true'), @@ -124,6 +129,27 @@ def func(parser, options, args): print 'Branch "%s" created.' % args[0] return + elif options.clone: + + if len(args) == 0: + clone = crt_series.get_branch() + \ + time.strftime('-%C%y%m%d-%H%M%S') + elif len(args) == 1: + clone = args[0] + else: + parser.error('incorrect number of arguments') + + check_local_changes() + check_conflicts() + check_head_top_equal() + + print 'Cloning current branch to "%s"...' % clone, + sys.stdout.flush() + crt_series.clone(clone) + print 'done' + + return + elif options.delete: if len(args) != 1: