We are TickIT accredited as part of our ISO 900x quality system. This means that all changes to code have to be traceable back to either a specification or fault report. So I thought why not make ticket numbers in commit compulsory, that way all commits can be traced to tickets. This turned out to be more than a little controversial. There is an easy case and that is where a fault has been reported so there is a ticket to book the commit against. But there are a couple of other cases.
Someone came to me and said that he is working on new functionality so there isn't a ticket. My answer was to create a ticket for that work and commit against it as it is implemented. You will end up with a very long ticket, but it will collect in one place all of the work which has been done. I think that this record will turn out to be very useful, particularly if some of the work is done on branches. A weakness of Subversion (until it gets true merge tracking) is that it is hard to trace the history of code which has been partly developed on a branch and then on trunk. Finding the branch history from the trunk it not automatic. By having a Trac ticket for that work every commit can be traced.
A more serious problem is that of minor changes. Another person came to me and said that we are trying to be more agile and that I have just added an onerous step to a commit. This will dissuade people from making small changes, and a large number of small changes improve product quality a lot. I am taking about things like tool button order, pixel alignment of items on a form etc. It is obviously too much to expect, and arguably undesirable for, a ticket to be raised for each of these changes. What I have suggested is that each development has a single ticket titled "Trivia" against which all these changes are logged. If users write the ticket number on a post-it and stick it somewhere they can see it then they will never be caught short of a ticket when one is needed.
Why make the ticket number compulsory? Because otherwise people don't add a ticket number when they should because laziness kicks in. This way we will get the traceability and history information we require. And it doesn't only get us though a TickIT inspection, it will actually be useful.
In summary, people need to be pragmatic about a forced ticket/commit relationship.