Whereas I can appreciate how useful git is, and indeed I use it on a daily basis, I can't help thinking how appropriate Linus' naming was. It's a pig to use for anything beyond incremental commits ... and every now and again, you make a mistake that takes a long time to rectify. On the one hand it shouldn't be that hard, but on the other hand it's a command line tool with a lot of options, so I guess it's what you'd expect ...

In anticipation of "why on earth are you storing your source code in a database rather than on the filesystem like everyone else!", here's my answer, or at least one of the driving factors;

Databases (Mongo in particular) gives you the option to easily store and organise multiple copies of the same file. This makes it really easy (and robust) to implement a completely integrated, graphical, version control system.

This view is showing the "changed" file tree, which contains all files in the current branch that differ from master. Launching the editor from here on a file gives a split view showing the differences between the current branch version of the file, and the version currently resident in master, and you can happily edit from here and it will update both panes in real-time. (i.e. continually showing the differences)

Similarly, if you launch a split view from the main editor, it'll show the current version of the file and the previous version, and the differences between them .. with the option to scan back through the versions to show cumulative differences between the current version and a version at any historical point in time.

Kudos to the CodeMirror guys for the MergeView addon!