Mercurial es una herramienta de control de revisiones distribuida para desarrolladores de software . Es compatible con Microsoft Windows y sistemas similares a Unix, como FreeBSD , macOS y Linux .
Desarrollador (es) | Matt Mackall |
---|---|
Versión inicial | 19 de abril de 2005 [1] |
Lanzamiento estable | 5.8 [2] / 3 de mayo de 2021 |
Repositorio | |
Escrito en | Python , C y Rust [3] |
Sistema operativo | Similar a Unix , Windows , macOS |
Tipo | Control de versiones |
Licencia | GNU GPL v2 + |
Sitio web | www |
Los principales objetivos de diseño de Mercurial incluyen alto rendimiento y escalabilidad, descentralización, desarrollo colaborativo totalmente distribuido, manejo robusto de archivos binarios y de texto plano , y capacidades avanzadas de ramificación y fusión, sin dejar de ser conceptualmente simple. [4] Incluye una interfaz web integrada. Mercurial también ha tomado medidas para facilitar la transición para los usuarios de otros sistemas de control de versiones, particularmente Subversion . Mercurial es principalmente un programa impulsado por línea de comandos , pero hay extensiones de interfaz gráfica de usuario disponibles, por ejemplo , TortoiseHg , y varios IDE ofrecen soporte para el control de versiones con Mercurial. Todas las operaciones de Mercurial se invocan como argumentos para su programa controlador hg
(una referencia a Hg, el símbolo químico del elemento mercurio ).
Matt Mackall originó Mercurial y se desempeñó como su desarrollador principal hasta finales de 2016. Mercurial se lanza como software libre bajo los términos de GNU GPL v2 (o cualquier versión posterior [5] ). Se lleva a cabo principalmente mediante el lenguaje de programación Python , pero incluye un binario diff aplicación escrita en C .
Historia
Mackall anunció Mercurial por primera vez el 19 de abril de 2005. [1] El ímpetu para esto fue el anuncio a principios de ese mes de Bitmover de que iban a retirar la versión gratuita de BitKeeper debido al desarrollo de SourcePuller .
BitKeeper se había utilizado para los requisitos de control de versiones del proyecto del kernel de Linux . Mackall decidió escribir un sistema de control de versiones distribuido como reemplazo para su uso con el kernel de Linux. Este proyecto comenzó unos días después de que Linus Torvalds iniciara el ahora conocido proyecto Git con objetivos similares. [6]
El proyecto del kernel de Linux decidió usar Git en lugar de Mercurial, pero Mercurial ahora se usa en muchos otros proyectos (ver más abajo ). "Git vs. Mercurial" se ha convertido en una de las guerras santas de la cultura hacker . [7]
En una respuesta en la lista de correo de Mercurial, Matt Mackall explicó cómo se eligió el nombre "Mercurial":
Poco antes del primer lanzamiento, leí un artículo sobre la debacle en curso de Bitkeeper que describía a Larry McVoy como voluble (en el sentido de 'voluble'). Dados los múltiples significados, la abreviatura conveniente y el buen ajuste con mi esquema de nomenclatura preexistente (vea mi dirección de correo electrónico), hizo clic instantáneamente. Mercurial se llama así en honor a Larry. No sé si lo mismo ocurre con Git. [8] [9]
Proyectos de alto perfil como Java, es decir, OpenJDK han utilizado Mercurial [10] (pero ya no lo hace a partir de Java 16).
Diseño
Mercurial utiliza hashes SHA-1 para identificar revisiones. Para el acceso al repositorio a través de una red, Mercurial utiliza un protocolo basado en HTTP que busca reducir las solicitudes de ida y vuelta, las nuevas conexiones y la transferencia de datos. Mercurial también puede trabajar sobre SSH donde el protocolo es muy similar al protocolo basado en HTTP. De forma predeterminada, utiliza una combinación de 3 vías antes de llamar a las herramientas de combinación externas.
Uso
La Figura 1 muestra algunas de las operaciones más importantes de Mercurial y sus relaciones con los conceptos de Mercurial.
Adopción
Aunque Mercurial no fue seleccionado para administrar las fuentes del kernel de Linux, ha sido adoptado por varias organizaciones, incluyendo Facebook , [11] el W3C y Mozilla . Facebook está usando el lenguaje de programación Rust para escribir Mononoke, [12] [13] un servidor Mercurial diseñado específicamente para soportar grandes repositorios multiproyecto.
En 2013, Facebook adoptó Mercurial y comenzó a trabajar para escalarlo para manejar su gran repositorio de código unificado. [14]
Google también usa Mercurial en su monorepo 'Piper'. [15]
Bitbucket anunció que sus servicios de control de versiones basados en web terminarían el soporte para Mercurial en junio de 2020 (luego extendido a julio de 2020), [16] explicando que "menos del 1% de los nuevos proyectos lo usan, y las encuestas de desarrolladores indicaron que el 90% de los desarrolladores usan Git ". [17] Mientras tanto, cientos de usuarios cuestionaron abiertamente el razonamiento para borrar masivamente datos históricos, preguntaron por qué no había una advertencia significativa ni un plan de migración formal, y entraron en pánico por el apresuramiento del tiempo en el hilo de soporte oficial de su compañía. [18]
Gestión de repositorios y servidores Mercurial
- Heptapod , una bifurcación de Gitlab para Mercurial de Octobus
- Kallithea , una bifurcación GPLv3 de RhodeCode
- Horno de Fog Creek Software
- Phabricator de Phacility
- RhodeCode de RhodeCode Inc.
Alojamiento de código fuente
Los siguientes sitios web proporcionan alojamiento de código fuente gratuito para los repositorios de Mercurial:
- Bitbucket de Atlassian (obsoleto a partir de febrero de 2020; solo lectura desde julio de 2020) [17]
- Base de código [19]
- FusionForge
- GNU Savannah por FSF
- Heptapodo
- Mozdev
- OSDN [20]
- Otros [21]
- Perforce [22]
- Puszcza [23] (un sitio hermano de GNU Savannah, alojado en Ucrania)
- FuenteForge
- fuente
- TuxFamily [24]
Proyectos de código abierto que utilizan Mercurial
Algunos proyectos que utilizan el RCS distribuido de Mercurial: [25]
- Salud GNU
- Biblioteca GNU de precisión múltiple
- Octava GNU
- LIMÓN
- LiquidFeedback
- Mozilla [26] (también usa Git / GitHub [27] )
- Nginx
- Orthanc
- Lengua macarrónica
- RhodeCode
- Redondeo
- Tryton
- WinDirStat
- wmii
- XEmacs
- Xine
Ver también
- Comparación de software de control de versiones
- Control de versiones distribuido
- Lista de software de control de versiones
Referencias
- ↑ a b Mackall, Matt (20 de abril de 2005). "Mercurial v0.1 - un SCM distribuido escalable mínimo" . Kernel de Linux (lista de correo).
- ^ https://www.mercurial-scm.org/wiki/WhatsNew#Mercurial_5.8_.282021-05-03.29 .
- ^ "Archivo README en el subdirectorio rust, rama maestra" . 24 de enero de 2020 . Consultado el 30 de enero de 2020 .
- ^ Mackall, Matt. "Hacia un mejor SCM: Revlog y Mercurial" (PDF) . Mercurial . Archivado (PDF) desde el original el 26 de mayo de 2019 . Consultado el 26 de mayo de 2019 .
- ^ "Relicensing" , Mercurial (wiki), Mercurial-scm.org.
- ^ Mackall, Matt (29 de abril de 2005). "Re: Mercurial 0.4b vs punto de referencia de patchbomb de git" . Kernel de Linux (lista de correo). Archivado desde el original el 9 de julio de 2012.
- ^ "Manejo de código fuente con Mercurial" .
Los fanáticos de Mercurial y Git también están felices de discutir la curva de aprendizaje, los méritos y la usabilidad del conjunto de comandos de cada sistema VCS. El espacio evita esa discusión aquí, pero una búsqueda en la web sobre ese tema proporcionará una gran cantidad de material de lectura interesante.
- ^ Mackall, Matt (15 de febrero de 2012). "¿Por qué Matt eligió el nombre Mercurial?" . Mercurial (lista de correo) . Consultado el 7 de junio de 2016 .
- ^ Torvalds ha dicho: "Soy un bastardo egoísta, así que nombro todos mis proyectos como yo mismo. Primero Linux, ahora git".
- ^ James Gosling (octubre de 2006). "Implementaciones de la plataforma Java de Open Sourcing Sun, Parte 1" (Entrevista). Entrevistado por Robert Eckstein. Sol. Archivado desde el original el 1 de marzo de 2009.CS1 maint: URL no apta ( enlace )
- ^ "Escalando Mercurial en Facebook" . 7 de enero de 2014.
- ^ "Un servidor de control de fuente Mercurial, diseñado específicamente para soportar grandes monorepos .: facebookexperimental / mononoke" . 31 de enero de 2019 - a través de GitHub.
- ^ "Grupos de Google" .
- ^ Goode, Durham; Agarwal, Siddharth. "Escalando Mercurial en Facebook" . Código de Facebook . Consultado el 13 de octubre de 2015 , a través de Facebook.
- ^ "Por qué Google almacena miles de millones de líneas de código en un solo repositorio" .
- ^ "Desactivación del soporte de Mercurial en Bitbucket" . 21 de abril de 2020. Archivado desde el original el 1 de julio de 2020.
- ^ a b Chan, Denise (20 de agosto de 2019). "Desactivación del soporte de Mercurial en Bitbucket" . Bitbucket . Consultado el 29 de agosto de 2019 .
- ^ "Qué hacer con sus repositorios Mercurial cuando Bitbucket apoyan las puestas de sol" . Archivado desde el original el 11 de julio de 2020. URL alternativa
- ^ "Alojamiento Git, Mercurial y Subversion" . Caracteristicas . Codebase HQ. 4 de marzo de 2013. Archivado desde el original el 30 de marzo de 2014 . Consultado el 4 de marzo de 2013 .
- ^ "Comencemos el desarrollo de OSS con Mercurial (Hg) - OSDN" . osdn.net .
- ^ "Alojamiento", Mercurial (wiki), Mercurial-scm.org.
- ^ "Pruebe Helix TeamHub Free | Perforce" . info.perforce.com .
- ^ "Bienvenida [Puszcza]" . ps.gnu.org.ua .
- ^ "TuxFamily: Alojamiento gratuito para personas libres" . tuxfamily.org .
- ^ "Algunos proyectos que utilizan Mercurial" , Mercurial (wiki), Mercurial-scm.org.
- ^ Reed, J Paul (12 de abril de 2007). "Sistema de control de versiones Shootout Redux Redux" .
- ^ mozilla-mobile / fenix , Mozilla Mobile, 19 de marzo de 2021 , consultado el 19 de marzo de 2021
enlaces externos
- Mackall, Matt, "FLOSS Podcast" , esta semana en tecnología
- O'Sullivan, Bryan (2009), Mercurial: La guía definitiva (libro), O'Reilly, disponible gratuitamente en línea
- Spolsky, Joel, Mercurial tutorial , archivado desde el original el 13 de junio de 2016 , consultado el 6 de abril de 2010
- Un tutorial de Mercurial basado en ejemplos (PDF) , SE : Jemander cubriendo tanto el uso básico como el avanzado
- "Mercurial: una alternativa a git" , LWN
- "¿Subversion o CVS, Bazaar o Mercurial? Comparación de cuatro sistemas de control de versiones de código abierto" , JavaWorld , septiembre de 2007
- "Mercurial", TechTalk (video)
- Lista de proyectos que utilizan Mercurial de la wiki de Mercurial
- Página web oficial