Take me over?
NAME
svncopy - extended form of svn copy
SYNOPSIS
svncopy.pl [option ...] source [source ...] destination
This script copies one Subversion location or set of locations to another, in the same way as svn copy. Using the script allows more advanced operations, in particular allowing svn:externals to be dealt with properly for branching or tagging.
Parameters:
source Subversion item to copy from.
Multiple sources can be given.
destination Destination to copy to.
Options:
-t [--tag] : set svn:externals to current version
[--pin-externals ]
-b [--branch] : update fully contained svn:externals
[--update-externals]
-m [--message] arg : specify commit message ARG
-F [--file] arg : read data from file ARG
-r [--revision] arg : ARG (some commands also take ARG1:ARG2 range)
A revision argument can be one of:
NUMBER revision number
"{" DATE "}" revision at start of the date
"HEAD" latest in repository
"BASE" base rev of item's working copy
"COMMITTED" last commit at or before BASE
"PREV" revision just before COMMITTED
-q [--quiet] : print as little as possible
--username arg : specify a username ARG
--password arg : specify a password ARG
--no-auth-cache : do not cache authentication tokens
--force-log : force validity of log message source
--encoding arg : treat value as being in charset encoding ARG
--config-dir arg : read user config files from directory ARG
--[no]verbose : sets the script to give lots of output
PARAMETERS
- source
-
The subversion item or items to copy from.
- destination
-
The destination URL to copy to.
OPTIONS
- -t [--pin-externals or --tag]
-
Update any svn:externals to ensure they have a version number, using the current destination version if none is already specified. Useful for tagging operations.
- -b [--update-externals or --branch]
-
Update any unversioned svn:externals which point to a location within one of the sources so that they point to the corresponding location within the destination.
Note: --pin-externals and --update-externals are mutually exclusive.
- -m [--message] arg
-
Specify commit message ARG
- -F [--file] arg
-
Read data from file ARG
- -r [--revision] arg
-
ARG (some commands also take ARG1:ARG2 range) A revision argument can be one of:
NUMBER revision number "{" DATE "}" revision at start of the date "HEAD" latest in repository "BASE" base rev of item's working copy "COMMITTED" last commit at or before BASE "PREV" revision just before COMMITTED
- -q [--quiet]
-
Print as little as possible
- --username arg
-
Specify a username ARG
- --password arg
-
Specify a password ARG
- --no-auth-cache
-
Do not cache authentication tokens
- --force-log
-
Force validity of log message source
- --encoding arg
-
Treat value as being in charset encoding ARG
- --config-dir arg
-
Read user configuration files from directory ARG
- --[no]verbose
-
Sets the script to give lots of output when it runs.
- --help
-
Print a brief help message and exits.
DESCRIPTION
This script performs an svn copy command. It allows extra processing to get around the following limitations of svn copy:
svn:externals definitions are (in Subversion 1.0 and 1.1 at least) absolute paths. This means that an svn copy used as a branch or tag operation on a tree with embedded svn:externals will not do what is expected. The svn:externals will still point at the original location and will not be pinned down.
svncopy --update-externals (or svncopy --branch) will update any unversioned svn:externals in the destination tree which point at locations within one of the source trees so that they point to the corresponding locations within the destination tree instead. This effectively updates the reference to point to the destination tree, and is the behaviour you want for branching.
svncopy --pin-externals (or svncopy --tag) will update any unversioned svn:externals in the destination tree to contain the current version of the directory listed in the svn:externals definition. This effectively pins the reference to the current version, and is the behaviour you want for tagging.
Note: both forms of the command leave unchanged any svn:externals which already contain a version number.