Subversion
Subversion is a version control system that keeps track of changes and revisions of documents in a central location. I run a subversion server for our group at svn.physics.ncsu.edu, where it holds projects and papers that people have worked on in the past. I encourage everyone who works on code, especially with more than one person, to take advantage of subversion. It keeps track of commits by separate people, and handles conflicts. It also has more advanced features such as branching. To request an account, or a new directory on the subversion server, send a request to pyhelp at pams dot ncsu dot edu.A brief tutorial on subversion
The main subversion command is svn. The basic syntax is svn command arguments Note, I may or may not have done a very good job on this very brief tutorial, so if there's still any confusion, see the official documentation on Initial checkout procedure and Basic work cycle. That second link also has information on resolving conflicts. To get started, say I've created you a directory on the subversion server at /repos/Codes/ourcode. The first thing you'd do is check out a copy of that directory. The command for this is svn checkout https://svn.physics.ncsu.edu/repos/Codes/ourcodeA new directory under your current one will be created under the revision control of subversion. You would then either begin your code, or copy some existing code you wish to import into subversion. In either case, once you put files into the revision controlled directory, you will need to add those files to revision control. To do this, use the svn add command. Ex: svn add file1 file2 [...] The above two steps only need to be done once, svn add needs to be done whenever you want to add a file to revision control. Normally, one would work on their code, make changes, test, and then once you're ready to commit your changes to the repository, you run svn commit in the topmost directory that's under revision control. Subversion will then ask you for a commit message, where you will describe what you changed, then it may ask for your password if it's the first time you've made a commit, and then it will commit the changes to the server. If there is more than one person working on a project, then the svn update command becomes useful. This command will pull any new changes that may have occurred since your last update from the repository into your local working copy. It will never overwrite any local changes you've made since your last commit, if something is conflicting, then it will let you know. The other basic thing to remember is anytime you make changes to a file itself (not its contents) such as moving it, renaming, or deleting, you want to use the subversion commands svn move, svn copy, and svn delete. This way subversion can keep track of files that move around. Important Note, because of some underlying protocol limitations, svn move won't work with out setup when you try to commit it. Instead, copy the file with the normal cp command, and then svn add the new one and svn delete the old one. You'll lose the log entries associated with that file, unfortunately.
