There's one corner case to be taken into account. Consider a branch with
two heads, and let's say they can be merged without conflicts (or the
conflicts can be solved in a straightforward manner). Now two developers
merge them independently. They end up with exactly the same revision
(with the very same hash), and when they sync later, we get one revision
with two author certs, two dates, and two changelogs. A bit strange at
first sight, but meaningful. Now, consider this with author, date, and
changelog being part of the revision (and thus the hash): The results of
the two developers doing the merge will not be the same, due to their
different author names, and (likely) due to their different commit date.
We end up with two 'merged' revisions, and the branch again has two
heads. After syncing, the devs have to do a merge again, ... and again,
... :)