Initialize
You need to create a primary repository for svk to use. You can create
this repository using
svk depotmap --init
The default repository svk looks for is ~/.svk/local
After the first time you run svk, you'll have a .svk/config file, you
can edit the depotmap to modify the default repository and add
other maps to make the repositories accessible from svk. Also, see
svk depotmap --help
Mirroring
For example if you want to bring the svk source tree to
your local repository:
svk mirror //svk/trunk http://svn.elixus.org/repos/member/clkao/svk
Then you can synchronize with:
svk sync //svk/trunk
If you don't want to sync every revision from the remote, you can
add a -s REV option as the first revision to sync without previous
changes.
svk sync //svk/trunk -s HEAD
Now you might want to create a local branch:
svk cp -m 'local branch for svk' //svk/trunk //svk/local
checkout / update / commit
Most of the normal operations you use in svn would be found in svk also:
svk co //svk/local svk # checkout to svk under current directory
(Note that for the moment: we don't use .svn directory, so you can't move the
checkout copies. A subcommand should be available in the future)
svk up -r REV # update to revision <REV>
Also note that subcommands do not support multiple targets at this
moment.
merge
In svk, you can merge into a checkout copy or into the repository
directly. For example, if you want to bring your local change from
rev 3 to rev 6 to the remote:
svk merge -r 3:6 //svk/local //svk/trunk
The commit by merge will be made to the remote repository in this
case. (It's advised to check with -C to see if the merge succeeded)
Please note that currently Algorithm::Merge has many bugs that will
cause merging to fail. A merge regression code is built into the merge command,
please help report failed merges to the authors. We will either try
to fix Algorithm::Merge or use svn's diff library when it goes
streamy instead of mmapping.
smerge
Smart merge, or star-merge. This is a frontend of merge
(described above) which stores extra information about performed merges
and finds appropriate revision numbers to use automatically.
smerge is (heavily?) inspired by the star-merge algorithm developed
by TomLord for the GnuArch revision control system. It also supports
baseless merges. Additionally, you have the option to specify an arbitary
common base revision.