Doesn’t it bug you when you see commit messages that say ‘Updated my code to have this cool new feature’, I am going to confess I do that too. However, it makes no sense. Ofcourse the code was updated, if it wasn’t then you wouldn’t have anything to checkin. Similarly, ‘Added a new feature to do X Y Z’ is anoying. You can probably come up with millions of annoying commit messages. A better alternative would simply say ‘X Y Z’, if your in the habbit of formatting your commit messages (which you should), then maybe it would say.
X Y Z
- X is explained as ... depends on ...
- Y is a silly feature
- Z is an ugly hack causes X and Y to be tightly coupled
TODO: factor Z out
Since we are on the subject of commit messages, these should be coherent blocks. i.e. do not commit all your code under one commit with a messages ‘Completed Development of the Application’, one aspect of version control is to be able to go back in history and learn/remember what you have done. A second feature of version control, is to save your work, if you are waiting for your full application to be coded before you hit save, you have issues. So small edible byte sized commits are awesome, huge unmeaningful (sometimes hillarious, see http://github.com/jseutter/getoffmylawn for many examples of bad messages) are not.
Finally, since this is my first post about VCS, I should clarify my current situation. I am a mercurialist with hint of git. I am loving hg-git, and is hoping git-hub soon wakes up out of its coma. Bitbucket is shaping up though, and its currently looking awesome. Maybe its time for someone to write a git-hg plugin for git and return the favour. Oh and I think SVN is retarted (and you should use CVS if you want to decouple version from the control).