Emacs version control
I discovered how emacs version control worked today… and was duelly impressed. (Having previously thought that it didn’t work at all well – guess this means I should learn to read manuals).
Regardless, emacs comes with a unified version control front-end which supports back-ends for most version control systems : I believe this includes git, svn and bzr). This can do most of the things that one wants to do.
One of my only irritations is that one can’t revert individual lines of the diffs that it shows.
Summary for the impatient
Emacs version control is wonderful, I’m dim for not realising this earlier. To make it work do the following:
C-x v = in a file for a diff
C-x v d <TOP LEVEL DIR> to get a list of all modifed files, then mark everything (hold down m) and press C-x v v.
If you want to see diffs for individual files press v=.
 As an aside, one of the reasons I hadn’t found this out earlier was because I was under the false impression the mode help (C-h m) would show all relevant keybindings… I’m not quite sure why, C-h b is (strangely!) better for this purpose.