The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

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

SYNOPSIS

 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]

OPTIONS

 -l [--list]        : list branches for this project
 --create           : create a new branch
 --tag              : create in the tags directory
 --local            : targets in local branch
 --delete           : delete BRANCH(s)
 --checkout         : checkout BRANCH in current directory
 --switch           : 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     
                      changes

DESCRIPTION

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.

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

  'svk:project:<projectName>:path-trunk'
  'svk:project:<projectName>:path-branches'
  'svk:project:<projectName>:path-tags'

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.