I use SVN


Subversion is an open source version control system, a successor of CVS. It is used to maintain current and historical versions of files such as source code, web pages, and documentation.

You upload your files (documents) on the server, and you need to commit your changes at the end of the day. It is accessible, secure, well ordered and easy to use, and good to archive far-from-the-computer. Every time you make a change on the server, it saves into a new version (Revision 1, 2, 3..).

I use SVN for keeping track of the modifications I make by working on my thesis from two computers - the one in the lab, and the one at home. Since I work 2 days per week from one, and 3 days from the other, I need to keep an updated versions of my files. It is similar to carrying your usb-stick, but much more secure (no chance to loose it), much more reliable (since it is saved on a secure server). It is faster, accessible from everywhere, and fun.

Here are some commonly used commands (there are many more, check $svn help). Don't forget to firstly access the directory you are have under svn ($cd folder)

$svn co url : first time check out (download all from the server)

$svn status
: to check if the version you have on your current computer is the newest one. It will list all files that are not on the SVN. If there are some, you need to update with

$svn update : to update the version on the current computer

If you create a new file/folder while working, you need to add it to your online directory. Here's how:

$svn add file_name: to add a file/folder (adding a folder will automatically add all the files in this folder)

$svn remove file_name: to remove a file/folder

If you work on an existing file, you need, at the end of the day, to commit your changes. You need to type:

$ svn commit -m "message" file_name : to commit your modifications to an existing file at the end of the day.

After committing, you can do $svn update in order to get the newest version on your computer (and sync with the server).

Note: after doing $svn update, there might appear a list of files which are not versioned, or not updated, etc. A letter will appear in front of each of these files. Here is the meaning of some of these letters:

M : this file has been modified
A : this file has been added and not committed
? : ...
! : this file has not been versioned