Q:

Why is the post-receive hook still needed for trac 1.0?

In order to be able to close tickets with the git commit message, we could write something like this:
implement something

fixes #2

When I look at the timeline in trac afterwards, this commit message appears along with the commit hash. Also, trac recognizes that #2 references a ticket and creates a clickable link so that I could click on #2 and could watch the ticket.
So, obviously everything needed to parse a commit message is already present. But even if I write fixes #2, the ticket state does not get touched. 
I need to put the post-receive hook provided by http://trac.edgewall.org/attachment/wiki/TracGit/post-receive-hook.py into my hooks directory in the git repo in order to update the ticket states with commit messages.
Why is this still needed? Are there known plans to make the hook superfluous?

A:

No there are no such plans, and you may even see why, in a minute.
Linking of tickets mentioned in commit messages is the blessing of Trac's ability to translate WikiFormatting almost everywhere throughout the system. Note that this only affects text presentation and does not alter content permanently at all.
The ticket commit updater is conceptually and technically very different. It does alter tickets and their history permanently, even has the ability to change ticket status.
Because Trac goes a lightweight, low fuzz way, it uses a VERY conservative common denominator of core functions. It is so slim that some people think it is not as mighty as the competition, but it is this KISS principle that makes Trac really outstanding (subject to discussion about personal taste - I know).
Trac knowingly avoids the popular all-inclusive and all-on-by-default approach. But it not only supports but actively encourages optional extensions for customization of every part of the system, from presentation down to near-core-functions. On the CONTRA side it'll take you some time to get what you want, sure. But on the PRO side you'll end up with a system you control actively, because you chose, activated and configured it before. You see?

