Working with SVK

SVK is a decentralized version control system built on top of the Subversion back-end.

Mac OS X

 * Install darwinports.
 * sudo port install svk

Setting up the Mirror
1. Grab the AA subversion repository. I encountered SVN errors when checking out the entire repository, so I instead grabbed it using rsync.

$ mkdir armagetronad-svn $ RSYNC_PROXY=rsync-svn.sourceforge.net:80 \ rsync -a rsync-svn-a::svn/armagetronad/* ./armagetronad-svn

2. Setup the depotmap if this is your first time using svk.

$ svk depotmap --init

3. Setup the svk mirror.

$ svk ls file://$HOME/armagetronad-svn/ Options I chose:
 * base URI
 * default


 * depot path
 * //mirror/armagetronad


 * mirror to
 * most recent revision — h)ead

4. Relocate the mirror to point at the SourceForge.net SVN repository.

$ svk mirror --relocate \ //mirror/armagetronad \ https://svn.sourceforge.net/svnroot/armagetronad $ svk mirror --list Path                   Source ============================================================ //mirror/armagetronad   https://svn.sourceforge.net/svnroot/armagetronad

5. Sync-up the mirror.

$ svk sync //mirror/armagetronad

Hacking Away
1. Create a local branch and check it out.

$ svk cp -p //mirror/armagetronad/armagetronad/trunk/armagetronad //local/armagetronad $ svk co //local/armagetronad

2. Hack away...

3. Merge the changes from you branch back into the AA SVN tree.


 * If you want to push the changes as individual patches (not sure if  is needed):
 * $ svk smerge --incremental --log //local/armagetronad //mirror/armagetronad/armagetronad/trunk/armagetronad


 * If you want to push as one big patch
 * $ svk merge //local/armagetronad //mirror/armagetronad/armagetronad/trunk/armagetronad