The Subversion (svn) version control system aims to take over the CVS user base, while svk attempts to take over everything else - including people who already switched to other systems, as well as people who had not started using version control. It is written in Perl and is using Subversion's underlying filesystem.
A quick glance about svk for people already familiar with Subversion:
- svk uses the subversion fs library. the SVN::XD module is a svn_wc (working copy) replacement (XD is character increment of WC).
- SVN::XD does not use the .svn for checkout meta-data. it uses Data::Hierarchy for storing per-directory meta-data in a compact way. Read about WhyXD.
- svk uses svm (svn mirror) for retrieving remote repositories (via ra) to a certain point of the local repository. There are plans to integrate svm and vcp so we have instant ability to branch remote cvs or perforce.
- the depot spec is like : /<depotname>/<path>. ~/.svk/config holds a depotmap hash for mapping depotname (which could be empty) to a path containing a subversion repository.
- when committing (or merging) into the mirrored directory, svm provides a commit editor for svk to use. the merge brings changes from local to remote repository if there's no conflict.
- using a local repository holding the subversion tree for benchmark, svk checkout time is 3 times faster than svn.
Read on about SVKUsage.