Même époque, esthétique différente
Git et Mercurial ont tous deux été lancés en avril 2005, tous deux comme réponses aux disputes de licence de BitKeeper. Linus Torvalds a écrit Git pour le kernel Linux; Matt Mackall a écrit Mercurial.
La position de Git : puissance, bords, faire confiance à l'utilisateur
Git expose ses internals. Réécrire l'historique est encouragé. L'utilisateur est présumé compétent.
La position de Mercurial : sécurité, cohérence, conservatisme
Mercurial cache les internals plus agressivement. Les commandes par défaut réécrivent rarement l'historique.
Le modèle de branche
# Mercurial : named branches sont permanents
hg branch feature/login
hg commit -m "Start work"
# Mercurial : bookmarks sont comme des branches Git
hg bookmark feature/login
hg commit -m "Start work"
hg bookmark -m feature/login feature-rename
# Git : branches sont des pointeurs mutables
git checkout -b feature/login
git commit -m "Start work"
git branch -m feature-rename
L'expérience CLI
La CLI de Mercurial est plus uniforme. La CLI de Git a grandi sur des décennies et a des bords âpres.
Vitesse
Les deux systèmes sont rapides sur les projets typiques.
Extensions et portée
Le modèle d'extensions de Mercurial est de première classe. Git livre tout dans un binaire.
La question de la réécriture d'historique
Mercurial par défaut refuse — vous devez activer histedit ou rebase. Git par défaut autorise.
Fonction de hash
Les deux utilisent SHA-1 historiquement. Git migre vers SHA-256.
Divergence du monde réel
Facebook (maintenant Meta), un des plus grands utilisateurs de Mercurial, l'a forké pour construire Sapling. Mozilla a utilisé Mercurial pour Firefox jusqu'à migrer vers Git en 2023.
Pourquoi l'écosystème compte plus que la pureté technique
La CLI de Mercurial est sans doute plus apprenable. Pourtant Git a gagné des parts de marché.
Que retenir de Mercurial
Même sur un projet Git, les leçons de Mercurial s'appliquent.