Stessa era, estetica diversa
Git e Mercurial furono entrambi rilasciati nell'aprile 2005, entrambi come risposte alle controversie di licenza di BitKeeper.
La posizione di Git: potenza, bordi, fidarsi dell'utente
Git espone i suoi internals.
La posizione di Mercurial: sicurezza, coerenza, conservatorismo
Mercurial nasconde gli internals piu aggressivamente.
Il modello di branch
# Mercurial: named branches are permanent
hg branch feature/login
hg commit -m "Start work"
# Mercurial: bookmarks are like Git branches
hg bookmark feature/login
hg commit -m "Start work"
hg bookmark -m feature/login feature-rename
# Git: branches are mutable pointers
git checkout -b feature/login
git commit -m "Start work"
git branch -m feature-rename
L'esperienza CLI
La CLI di Mercurial e piu uniforme. Quella di Git e cresciuta nel tempo.
Velocita
Entrambi i sistemi sono veloci sui progetti tipici.
Estensioni e portata
Il modello di estensione di Mercurial e first-class.
La domanda della riscrittura della storia
Entrambi possono riscrivere la storia. Mercurial per default rifiuta — bisogna abilitare histedit o rebase.
Funzione hash
Entrambi usano SHA-1 storicamente. Git sta migrando a SHA-256.
Divergenza nel mondo reale
Facebook (ora Meta), uno dei piu grandi utenti Mercurial, lo ha forkato per la scala monorepo, costruendo Sapling. Mozilla ha usato Mercurial per Firefox fino al 2023.
Perche l'ecosistema conta piu della purezza tecnica
La CLI di Mercurial e arguably piu apprendibile. Eppure Git ha vinto le quote di mercato perche GitHub ha scommesso su Git.
Cosa prendere da Mercurial
Anche su un progetto Git, le lezioni di Mercurial si applicano: preferire default sicuri, gateare operazioni pericolose dietro opt-in esplicito.