1. Plattformzentriertheit:
git ist eher linuxorientiert. Ich benutze kein Linux (Android würde ich nicht als Linux sehen wollen) und habe nicht vor, damit anzufangen. git ist eine Sammlung von Shellscripts, die andere Shellscripts erzeugen, die teilweise Ruby, teilweise Perl aufrufen. Total praktisch und wartbar. Die Windowsversion zum Beispiel leidet entsprechend, weil da allerlei emuliert werden muss - von den dadurch entstehenden Sicherheitsproblemen
reden wir lieber nicht.
Mercurial hat dieses Problem nicht.
2. Unterlegene History:
Das Feine an einem VCS ist es ja, theoretisch die letzten vier Tage, drei Stunden und 27 Sekunden in der Entwicklung zurückgehen zu können, um auf dieser Basis etwas - bei Bedarf - völlig anderes aufziehen zu können.
Angenommen, ich möchte rückwirkend meine Mailadresse in allen Commits ändern.
git kann das mit einem sehr unangenehmen "filter-branch"-Aufruf, bei
Mercurial geht das nach einmaliger Konfiguration mit 'nem Einzeiler. Aber das muss man ja nicht so oft machen. Viel übler ist das m.E. unzureichende Branching in git.
Nehmen wir an, ich möchte alles, was ich lokal angerichtet habe, überschreiben, weil ich was übersehen habe. Das passiert mir häufiger, manchmal auch erst nach einem Commit (vor dem Push). git zwingt mich dann dazu, mit allerlei "force"-Parametern auf HEAD zu "resetten" und/oder einen anderen Branch auszuchecken und den aktuellen wegzuwerfen und/oder sonstige Dinge zu tun, die mehr Schaden anrichten als reparieren können. Eine "git-Branch" nennt sich in
Mercurial "Bookmark" und man braucht es eigentlich nicht, denn stattdessen unterstützt es "named branches", also benannte Zweige, zwischen denen man nach Belieben umschalten, mergen, rückgängig machen und verschieben kann. Die verschiedenen Ansätze von Branches sind dann auch der größte
Unterschied zwischen git und Mercurial.
Ich kann durchaus verstehen, dass git praktisch ist, wenn man zu Projekten mit vielen verschiedenen Branches, Benutzern und parallel entwickelten Features beitragen möchte, zum Beispiel zu Unsinn wie dem Linuxkernel. Für private Projekte oder solche, auf die nicht die halbe Welt Schreibzugriff haben sollte, ist git allerdings schlichtweg
im Weg.