Monotone es una herramienta de software de código abierto para el control distribuido de revisiones .
Desarrollador (es) | El equipo monótono |
---|---|
Versión inicial | 6 de abril de 2003 |
Lanzamiento estable | 1.1 [1] / 4 de mayo de 2014 |
Repositorio | |
Escrito en | C ++ |
Sistema operativo | Unix , Linux , BSD , Mac OS X , Windows |
Disponible en | Inglés, italiano, sueco, portugués, alemán, español |
Tipo | Control de revisión |
Licencia | Licencia pública general GNU |
Sitio web | www |
Monotone realiza un seguimiento de las revisiones de los archivos, agrupa conjuntos de revisiones en conjuntos de cambios y realiza un seguimiento del historial a través de los cambios de nombre. El enfoque del proyecto está en la integridad sobre el desempeño. [2] Monotone está diseñado para operaciones distribuidas y hace un uso intensivo de primitivas criptográficas para rastrear las revisiones de archivos (a través del hash seguro SHA-1 ) y para autenticar las acciones del usuario (a través de firmas criptográficas RSA ).
Historia
Hitos
La versión 0.26 de Monotone introdujo cambios importantes en las estructuras internas de la base de datos, incluida una nueva estructura conocida por los desarrolladores de Monotone como lista . [3] Las bases de datos Monotone creadas con la versión 0.26 no pueden intercambiar revisiones con bases de datos Monotone más antiguas. Las bases de datos más antiguas deben actualizarse primero al nuevo formato. El nuevo protocolo netsync es incompatible con versiones anteriores de Monotone.
Como inspiración de Git
En abril de 2005, Monotone se convirtió en el tema de mayor interés en la comunidad de software libre después de que Linus Torvalds lo mencionara como un posible reemplazo de BitKeeper en el proceso de desarrollo de Linux . En una publicación en la lista de correo del kernel de Linux , Torvalds elogió a Monotone y menospreció a Subversion (y por extensión, todos los sistemas de control de versiones cliente-servidor): [4]
No se moleste en hablarme de la subversión. Si es necesario, comience a leer sobre "monótono". Esa parece ser la alternativa más viable, pero no molestes tanto a los desarrolladores que no hagan ningún trabajo. Ya están al tanto de mis problemas;)
- [4]
En lugar de adoptar Monotone, Torvalds decidió escribir su propio sistema SCM , Git . El diseño de Git usa algunas ideas de Monotone, pero los dos proyectos no comparten ningún código fuente central. Git tiene un enfoque mucho más fuerte en el alto rendimiento, inspirado por la larga historia y los exigentes modos distribuidos de colaboración utilizados por Torvalds y los otros autores del kernel de Linux. Torvalds comentó más tarde sobre el diseño y el rendimiento de Monotone:
Si quieres un VCS escrito en C ++, juega con Monotone. En realidad. Usan una "base de datos real". Usan "bonitas bibliotecas orientadas a objetos". Usan "bonitas abstracciones de C ++". Y, francamente, como resultado de todas estas decisiones de diseño que suenan tan atractivas para algunas personas de CS, el resultado final es un desastre horrible e insostenible.
- [5]
Un tema clave que se debatió [6] fue si el reemplazo de BitKeeper debería admitir la selección selectiva, mediante el cual un encargado del árbol puede aprobar un subconjunto de parches mientras rechaza otros de forma individual. Torvalds argumentó que este enfoque "da como resultado la dinámica y la psicología equivocadas en el sistema" al transferir la carga a los mantenedores de aguas arriba en lugar de obligar a los mantenedores de aguas abajo a esforzarse más para mantener sus árboles libres de basura. Además, argumentó que Monotone tiene razón en su aversión a la selección selectiva como característica, pero luego no lo llevó lo suficientemente lejos al no hacer que sea lo suficientemente fácil "tirar" los árboles de trabajo inmundos después de que se cumpla su propósito. [7] Torvalds también notó su percepción de que Monotone en ese momento no había alcanzado el nivel de desempeño requerido por un proyecto tan grande como el desarrollo del kernel de Linux.
Diseño
Al igual que GNU Arch , ya diferencia de Subversion , Monotone adopta un enfoque distribuido para el control de versiones. Monotone usa hashes SHA-1 para identificar archivos o grupos de archivos específicos, como con Git y Mercurial , en lugar de números de revisión lineales. Cada participante mantiene su propio historial de revisiones, almacenado en una base de datos SQLite local .
Integridad
Antes de una gran optimización en la revisión 0.27, el énfasis de Monotone en la corrección sobre la optimización a menudo se culpaba de las malas experiencias iniciales. La primera acción de un nuevo usuario a menudo es sincronizar (clonar) una gran base de datos Monotone existente, una acción que a menudo tomaba horas para bases de datos grandes, debido a la extensa validación y verificación de integridad que Monotone realiza cuando las revisiones se mueven a través de la red. Una vez que se llena la base de datos inicial (clon), las acciones posteriores generalmente proceden más rápidamente. A julio de 2010[actualizar], todavía hay espacio para una mayor optimización en algunas funciones más raras. [ cita requerida ]
Flujo de trabajo
Monotone es especialmente fuerte en su soporte para un flujo de trabajo de divergencia / fusión, que logra en parte al permitir siempre la confirmación antes de la fusión. [8]
Redes
Aunque Monotone originalmente admitía una variedad de protocolos de red para sincronizar árboles, ahora usa exclusivamente un protocolo personalizado llamado netsync , que es más robusto y eficiente, y comparte algo de base conceptual con rsync y cvsup . (Sin embargo, a partir de la versión 0.27, es posible utilizar el protocolo netsync en cualquier flujo, en particular, incluidas las conexiones ssh). Netsync tiene su propio puerto asignado por IANA (4691) y las versiones anteriores son compatibles con un complemento de Wireshark para análisis de tráfico. No hay un servidor Monotone separado porque cualquier cliente Monotone puede actuar como servidor.
Otras características
Otras características de Monotone incluyen:
- Buen soporte para la internacionalización y la localización
- Diseño portátil, implementado en C ++
- La alta integridad es un objetivo de diseño clave
- Monotone puede importar proyectos CVS .
- Firma de revisiones mediante certificados RSA
- Fácil de aprender, debido a un conjunto de comandos similar al de CVS
- Muy bueno para ramificar (tanto divergencias dentro de una rama como ramas con nombre) y fusionar
- Buena documentacion
- Muy poco mantenimiento
- Biblioteca de Perl completa y completa que le permite controlar completamente Monotone desde un script de Perl (mtn-browse hace uso de esto)
Inconvenientes
En enero de 2008[actualizar], los posibles inconvenientes de Monotone incluyen:
- Los usuarios potenciales no pueden verificar (o comprometerse) detrás de un proxy (muy común en entornos corporativos) debido a un protocolo que no es http.
- Problemas de rendimiento para ciertas operaciones (tirón inicial más notable)
Implementación
Monotone se implementa en C ++ de dialecto moderno sobre la biblioteca Boost , la biblioteca de criptografía Botan y la biblioteca de base de datos SQLite . Monotone admite la personalización y la extensión a través de funciones de gancho escritas en el lenguaje de programación Lua . El proceso de construcción monótono está automatizado con BuildBot e incluye extensas pruebas de regresión .
Ver también
- Comparación de software de control de revisiones
- Lista de software de control de revisiones
Referencias
- ^ "NOTICIAS" . 4 de mayo de 2014 . Consultado el 16 de julio de 2019 .
- ^ "7 Sistemas de control de versiones revisados" . 18 de septiembre de 2008 . Consultado el 1 de noviembre de 2010 .
- ^ ¿Qué son las listas?
- ^ a b Linus Torvalds (6 de abril de 2005). "LKML: Linus Torvalds: saga Kernel SCM" . LKML .
- ^ Linus Torvalds (6 de septiembre de 2007). "Re: [RFC] Convertir builin-mailinfo.c para usar The Better String Library" . GMANE . Archivado desde el original el 6 de febrero de 2016.
- ^ David Woodhouse (7 de abril de 2005). "LKML: David Woodhouse: saga Kernel SCM" . Consultado el 23 de febrero de 2017 .
- ^ Linus Torvalds (7 de abril de 2005). "LKML: Linus Torvalds: Re: Kernel SCM saga" . LKML .
- ^ "Tratar con una bifurcación - documentación monótona" . Consultado el 21 de noviembre de 2010 .
enlaces externos
- Página web oficial