Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SVK::Command::Branch(3User Contributed Perl DocumentatiSVK::Command::Branch(3)

       SVK::Command::Branch - Manage a project with its	branches

	branch --create	BRANCH [DEPOTPATH]

	branch --list [--all]
	branch --create	BRANCH [--tag] [--local] [--switch-to] [--from|--from-tag BRANCH|TAG] [DEPOTPATH]
	branch --move BRANCH1 BRANCH2
	branch --merge BRANCH1 BRANCH2 ... TARGET
	branch --checkout BRANCH [PATH]	[DEPOTPATH]
	branch --delete	BRANCH1	BRANCH2	...
	branch --setup DEPOTPATH
	branch --push [BRANCH]
	branch --pull [BRANCH]
	branch --offline [BRANCH]
	branch --online	[BRANCH]

	-l [--list]	   : list branches for this project
	--list-projects	   : list avaliable projects
	--create	   : create a new branch
	--tag		   : create in the tags	directory
	--local		   : targets in	local branch
	--delete [--rm|del]: delete BRANCH(s)
	--checkout [--co]  : checkout BRANCH in	current	directory
	--switch-to	   : switch the	current	checkout to another branch
				 (can be paired	with --create)
	--merge		   : automatically merge all changes from BRANCH1, BRANCH2,
				 etc, to TARGET
	--project	   : specify the target	project	name
	--push		   : move changes to wherever this branch was copied from
	--pull		   : sync changes from wherever	this branch was	copied from
	--setup		   : setup a project for a specified DEPOTPATH
	--from BRANCH	   : specify the source	branch name
	--from-tag TAG	   : specify the source	tag name
	-C [--check-only]  : try a create, move	or merge operation but make no
	-P [--patch] FILE  : Write the patch between the branch	and where it was
			     copied from to FILE
	--export	   : used with --checkout to create a detached copy
	--offline	   : takes the current branch offline, making a	copy
			     under //local
	--online	   : takes the current branch online, pushing changes back
			     to	the mirror path, and then switches to the mirror

       SVK provides tools to more easily manage	your project's branching and
       merging,	so long	as you use the standard	"trunk/, branches/, tags/"
       directory layout	for your project or specifically tell SVK where	your
       branches	live.

Usage (without projects)
       A very simple sample usage might	be to checkout the trunk from a
       project you want	to work	on but don't have upstream commit rights for.
       This allows you to maintain a local branch and to send in patches.

       Assuming	you have alread	mirrored this repository to //mirror/Project

	   svk co //mirror/Project/trunk
	   svk branch --co trunk //mirror/Project/

       and then

	   svk branch --offline

       You're now working in a local branch, make local	commits	and changes as
       you need	to.  If	you want to bring in changes from your remote
       repository, you can pull	them down

	   svk branch --pull

       To see what changes you've made,	you can	create a patch between the
       local branch and	the remote repository

	   svk branch -P - --push

       If you have commit rights to the	remote repository, you can also

	   svk branch --push

       to send your changes.

       You can use svk branch's	branching capability in	this mode, but it will
       be much friendlier if you set up	a project

Usage (projects)
       To initialize a project in a repository,	run the	setup command

	   svk branch --setup //mirror/Project

       If you have the standard	trunk branches tags directories	svk will offer
       them as the starting point.  In fact, if	you have trunk branches	and
       tags directories, svk will try to use them without neeting --setup, but
       you won't be able to use	the --project flag and will need to use
       depotpaths in commands.

       The rest	of this	documentation assumes you've set up a project called
       Example in //mirror/Project

       If you're in a working copy of svk where	it can work out	the Project
       name, you can leave off the --project flag from the examples below, but
       you can branch/tag/merge	without	having working copies

       To check	out the	trunk, you can run

	   svk branch --co trunk --project Example

       To create a branch for release engineering

	   svk branch --create Exmaple-1.0-releng --project Example

       Since you have a	checkout of trunk already, you can convert that

	   cd trunk
	   svk branch --switch-to Example-1.0-releng

       Or you can get a	clean checkout

	   svk branch --co Example-1.0-releng --project	Example

       If changes are made on trunk and	you wish to bring them down to the
       release engineering branch, you can do that with	the branch merge

	   svk branch --merge trunk Example-1.0-releng

       If you're cautious, use the check flags first:

	   svk branch -C --merge trunk Example-1.0-releng
	   svk branch -P -  --merge trunk Example-1.0-releng

       These will show you what	svk wants to do.

       Lets say	you want to add	a feature to trunk but work on a branch	so you
       don't inconvenience others who are working on trunk:

	   svk branch --create Feature --project Example

       work on your feature, svk ci some changes

	   svk branch --merge Feature trunk --project Example

       continue	to bring down changes several ways

	   svk branch --pull
	   svk branch --merge trunk Feature
	   svk branch --merge trunk .	(if you're in a	working	copy of	the branch)

       and then	merge back more	feature	work as	you need to

       To get rid of a branch when you're done with it

	   svk branch --delete Feature --project Example

       To see all of your branches, you	can do:

	   svk branch --list --project Example

       If you've been working on your releng branch and	are ready to cut a
       release,	you can	easily create a	tag

	   svk branch --tag --create 1.0rc1 --from Example-1.0-releng --project	Example

       If you would like to check out this tag,	use

	   svk branch --tag --co 1.0rc1	--project Example

Project	Property Details
       SVK branch also provides	another	project	loading	mechanism by setting
       properties on root path.	Current	usable properties for SVK branch are


       These properties	are useful when	you are	not using the standard
       "trunk/,	branches/, tags/" directory layout. For	example, a mirrored
       depotpath '//mirror/projA' may have trunk in "/trunk/projA/" directory,
       branches	in "/branches/projA", and have a standard "/tags" directory.
       Then by setting the following properties	on root	path of	remote
       repository, it can use SVK branch to help manage	the project:

	 'svk:project:projA:path-trunk => /trunk/projA'
	 'svk:project:projA:path-branches => /branches/projA'
	 'svk:project:projA:path-tags => /tags'

       Be sure to have all "path-trunk", "path-branches" and "path-tags" set
       at the same time.

perl v5.32.0			  2010-03-09	       SVK::Command::Branch(3)

NAME | SYNOPSIS | OPTIONS | DESCRIPTION | Usage (without projects) | Usage (projects) | Project Property Details

Want to link to this manual page? Use this URL:

home | help