Git
Revision control systems. Interesting eh? For a long time, CVS was the standard, only for it to be superseded by SVN and others. Recently there has been a lot of talk about so called distributed revision control systems such as Git.
I contribute to the Rockbox project, which uses SVN for version control. However, a good number of developers favour git, some of the reasons for which are outlined on a page in the Rockbox wiki. Out of interest I've been playing with git, and have found that it has some quite nice features. Of particular use is the idea of local branches, and the ensuing ability to work on multiple things at once (or test multiple patches at once) without having to muck around with multiple checkouts. However, as Rockbox uses SVN, it is necessary to use git-svn to interface between the local git and the remote svn. It is already a bit of an arse to remember how git works (it is also impressively easy to get yourself into a complete mess with git), so for reference below is a list of commands that I've picked up from various places.
Update the checkout: git svn rebase or git svn fetch
Commit stuff: git commit ... followed by git svn dcommit
Checkout a specific svn revision into a branch: git checkout -b branch_name `git-svn find-rev rev`
Reset edited files to svn head (before git commit): git checkout -f
See the remote svn branches and tags: git branch -r
Checkout a remote svn branch to a local git one: git checkout -b local_branch_name remote_branch_name