Misma era, estética diferente
Git y Mercurial fueron lanzados en abril de 2005, ambos como respuesta a las disputas de licencia de BitKeeper. Linus Torvalds escribió Git para el kernel Linux; Matt Mackall escribió Mercurial como alternativa.
La postura de Git: poder, bordes, confiar en el usuario
Git expone sus internals. Los comandos plumbing están documentados. Reescribir la historia se fomenta. El usuario es presumido competente.
La postura de Mercurial: seguridad, consistencia, conservadurismo
Mercurial oculta los internals más agresivamente. Los comandos por defecto rara vez reescriben la historia. El usuario es presumido mortal y protegido de bordes afilados.
El modelo de branch
# Mercurial: named branches son permanentes
hg branch feature/login
hg commit -m "Start work"
# Mercurial: bookmarks son como branches Git
hg bookmark feature/login
hg commit -m "Start work"
hg bookmark -m feature/login feature-rename
# Git: branches son punteros mutables
git checkout -b feature/login
git commit -m "Start work"
git branch -m feature-rename
La experiencia CLI
El CLI de Mercurial es más uniforme. El CLI de Git creció durante décadas y tiene bordes ásperos.
Velocidad
Ambos sistemas son rápidos en proyectos típicos.
Extensiones y alcance
El modelo de extensiones de Mercurial es de primera clase. Git envía todo en un binario.
La cuestión de reescribir historia
Mercurial por defecto se rehúsa — debes habilitar histedit o rebase. Git por defecto permite — git rebase -i está integrado.
Función hash
Ambos usan SHA-1 históricamente. Git está migrando a SHA-256.
Divergencia del mundo real
Facebook (ahora Meta), uno de los usuarios más grandes de Mercurial, lo bifurcó construyendo Sapling. Mozilla usó Mercurial para Firefox hasta migrar a Git en 2023.
Por qué el ecosistema importa más que la pureza técnica
El CLI de Mercurial es discutiblemente más aprendible. Sin embargo Git ganó cuota de mercado porque GitHub apostó por Git, el kernel Linux siguió eligiendo Git, y los proveedores de tooling siguieron.
Qué llevarse de Mercurial
Incluso en un proyecto Git, las lecciones de Mercurial aplican: prefiere defaults seguros, gatilla operaciones peligrosas detrás de opt-in explícito.