Current version
Git/Latestdiff: 1.5.6
Latest Snapshots
Produced after each commit or rebase to new upstream version
GIT
RSBAC source code, can be unstable sometimes
No events planned
This is an old revision of the document!
SVK is available from http://svk.elixus.org/ It is a “distributed” Version Control tool. It uses FSFS from SVN as it's sublayer. From a 10,000 feet view, SVK allows to checkout any SVN/CVS/Perforce/Git repository to your local machine and commit/checkout locally, then submit to the repository when you are done. So, it allows to work offline.
From a more technical point of view, SVK is like a repository on your local machine where you have two kinds of sub-repositories: Mirrors of SVN/CVS/… or local branches.
So let's initialise where to keep the local repository (the depot):
# svk depotmap --init
You can choose where to put or change the location of this depot with the relocate command:
# svk depotmap --relocate /path/to/somewhere
We will now mirror an existing SVN repository, RSBAC's for instance: Let's create a path just for mirrors. Put whatever you feel like as commit message when asked.
# svk mkdir //mirrors
Now create the mirrored path:
For anonymous mirroring
# svk mirror svn://svn.rsbac.mprivacy-update.de/rsbac1 //mirrors/rsbac1
For developers with write access
# svn+ssh://subversion@mprivacy-update.de/daten/subversion/rsbac1 //mirrors/rsbac1
And synchronise it:
# svk sync //mirrors/rsbac1
When committing or using this path directly, changes will affect the real SVN repository directly, much like using SVN would do.
Whenever you want to checkout this path, just do it. You can delete the files afterwards and check them out again, or you can simply update then. There will be no “.svn” directories or the like. SVK is just flexible.
To work offline or just do your stuff without affecting the repository directly, you've to create a local branch. Once you are done with your work you can commit it to the mirrored path, or create a patch if you have no write access (and send it to us )
So, create a directory for the local branches, and create one for rsbac1:
# svk mkdir //local # svk cp //mirrors/rsbac1 //local/rsbac1"
You can now checkout “local/rsbac1” or any part of it (like “local/rsbac1/linux-kernel/2.6/branches/linux-rsbac”), modify, commit (using “svk commit”, please never ever use svn on svk local repository, it would corrupt it.)
Once done, you have to merge back your local branch to the mirrored path (this will commit your changes to the real SVN repository)
# svk push //local/rsbac1
You can also get the changes from the mirror to update your local branch:
# svk pull //local/rsbac1
If you are a RSBAC developper, please do not forget to sign every commit made to the mirrored path!
Simply add “-S” to every commit, smerge, or push command.
# svk push -S //local/rsbac1
You can verify thoses signatures with the verify command
# svk verify -r revision