I see nobody mentioned SVK at all. It is a distributed version control system that works on top of subversions filesystem. It should give all the benefits of distributed version control system, but let you keep the central repo as a SVN repo.
Basically it goes like this:
Code: Select all
svk mirror https://spring.clan-sy.com/svn/spring //mirror/spring
The initial mirror operation initializes a mirroring of the master spring SVN repository to your local SVK repo. It will be an exact copy of the original repo, with full history and all (you can opt to not take all history for time/space saving).
This will sync your local mirror with the master. The first time you do this, it downloads the whole repo (setting up the mirror downloads nothing), and all the next times you do this you only get the changes that you did not yet have.
Code: Select all
svk copy -p //mirror/spring //local/spring
This will create a local branch of the spring project. You can do this as many times as you want, with different names for the last parameter. The -p is only needed the first time to create the parent dir 'local'. This branching is very cheap, as the SVN filesystem implements the SVK repo.
Code: Select all
svk checkout //local/spring/trunk ~/my-svk-checkouts/spring
Checkout our local branch to get a working copy. The working copy does not have any hidden metadata files or dirs unlike SVN with it's .svn dirs (per default. you could get that if you wanted).
Now hack away on your working copy. Then...
This commits your changes to your local branch.
This pushes your local commits to the master spring svn repo.
This pulls others changes to your local branch.
This is pretty much how all the other distributed version control systems also work, but you get to keep SVN master repo and some devs can keep using SVN as their tool of choise, and others can use SVK.
Oh and this is just as new as all the other distributed things, so prefer versions at least 2.*, because 1.* is not so nice.