My thoughts on SVN (or how to use git-svn to avoid it)
My university uses SVN as their preferred source code control system, and I came into contact with it for the first time the other day. For one of the modules I'm taking this year all the lab work is located in a special SVN repository. The ACW (assessed coursework) also has to be submitted through this SVN repository.
I found that (after some simple mistakes) it's not particularly difficult to pull down a repository - just a little bit fiddly (you have to create the directory to clone a repository into first). The trouble started when I tried to commit my changes. I found it almost impossible to just do a simple commit that contains all of the changes I'd made so far, though I might be missing something.
SVN itself feels rather clunky and outdated in the way it works. It doesn't have an inbuilt fork system, and you can't commit if you are offline (or if the central master repository is offline). Git, by comparison, supports both of these things. In addition, git apparently has better support for branching and merging, though I haven't come into contact with it yet.
My solution for this for now it to use
git-svn. To check if you have it installed, simply run the command
git svn --help. If it's installed, you will get a help message. If not, you'll get a harmless error message. On Linux you can install it via
sudo apt-get install git-svn. On Windows you should have it installed by default.
git-svn, you can clone an SVN repository much like you would for a regular git repository:
git svn clone https://path/to/svn/repo. This clones a remote SVN repository down into a local git repository.
From here you can do any number of git commits as normal. When you are ready to push your changes back up to the remote SVN repository, simply run
git svn dcommit. This will push all of your git commits up to the remote SVN repository as revisions.
Hopefully this post is helpful to someone. If I'm missing something here (and I probably am) please leave a comment below!
Update: If you need to pull down remote changes from the server, simply run `git svn rebase.