Software Sunday! GitHub The latest evolution in social revision control… If you do any complicated development, especially with a couple people, a revision control system (RCS) is essential. Basically, RCS allows you to have a central location that stores all the changes ever made to a project (the repository) and users can send updates that are tacked onto the list of changes to a file (usually called committing changes). If you realize that you made a mistake in your current project, you can always ‘rewind’ the file to a previous date. You can also have multiple people updating changes and the RCS will be smart about not letting one update bash another.
For a long time, everyone used CVS (Concurrent Versioning System). It was OK but had a lot of problems that would crop up when doing a lot of development. We got bit by the ‘assume everthing is ascii’ and ‘all changes must be committed’. Also, there can only be one repository and if you lose the repository you lose all the historical data so the repository has to be taken care of and you have to be able to reach it if doing any commits (annoying if the CVS repo is on another site and say you dont have network connectivity or the site is down)
We also used SVN for a brief time (but not enough to really have a strong opinion of it)
But then came along git and we really liked it. Three great things about it is that, first, you can commit and push to the repository as two seperate procedures. Second, git repositories are distributed, which means that every client has all the same data as the repository. So lets say your repository goes down or is deleted or lost, you can just make one of the clients into a repository. Third, you can rename and move files.
Anyways, so now we have a non-crappy RCS, hooray! But then to make it one better, github comes along!