Description
The CommitHook interface has two methods, beforeCommit() and afterCommit(), since the symmetry originally seemed like a good idea. However, in practice these methods are not really so symmetric after all.
For example, unlike afterCommit() the beforeCommit() method may end up being called multiple times for a given changeset if it needs to be repeatedly rebased or otherwise revised before it can be committed. There isn't even any guarantee that a particular changeset on which beforeCommit() has been called ever gets committed. And on the other hand there are good reasons to avoid calling afterCommit() on each and every commit that has been made. Instead it could be called only every now and then to cover larger sets of changes.
Thus I'd like to split the CommitHook interface to two parts that I'd tentatively call CommitEditor and Observer.