stringtranslate.com

Darcs

Darcs es un sistema de control de versiones distribuido creado por David Roundy . Las características principales incluyen la capacidad de elegir qué cambios aceptar de otros repositorios, la interacción con otros repositorios locales (en disco) o repositorios remotos a través de SSH , HTTP o correo electrónico, y una interfaz inusualmente interactiva. Los desarrolladores también enfatizan el uso de herramientas de software avanzadas para verificar la corrección: el sistema de tipos expresivos del lenguaje de programación funcional Haskell hace cumplir algunas propiedades, y las pruebas aleatorias a través de QuickCheck verifican muchas otras. [3] El nombre es un acrónimo recursivo de Darcs Advanced Revision Control System . [4]

Modelo

Darcs trata a los parches como ciudadanos de primera clase . Para el usuario, un repositorio puede verse como un conjunto de parches, donde cada parche no está necesariamente ordenado con respecto a otros parches, es decir, el conjunto de parches es solo un conjunto parcialmente ordenado . En muchos casos, los parches se pueden transmitir de forma independiente entre varios repositorios.

Muchas operaciones de ramificación, fusión y selección de elementos que requerirían comandos adicionales con sistemas basados ​​en instantáneas como Git o Mercurial se pueden realizar directamente con Darcs con los comandos "pull" y "push" habituales. En términos de interfaz de usuario, esto significa que Darcs tiene menos comandos. Estos comandos son más interactivos: uno puede elegir con mayor precisión qué parches desea intercambiar con repositorios remotos.

Los parches de un repositorio se ordenan linealmente. Darcs calcula automáticamente si los parches se pueden reordenar (una operación llamada conmutación) y cómo hacerlo. Estos cálculos implementan la denominada "teoría de parches".

Un parche de Darcs puede contener cambios de los siguientes tipos:

La noción de dependencia entre parches se define sintácticamente. Intuitivamente, un parche B depende de otro parche A si A proporciona el contenido que B modifica. Esto significa que los parches que modifican diferentes partes del código se consideran, por defecto, independientes. Para abordar los casos en los que esto no es deseable, Darcs permite al usuario especificar dependencias explícitas entre parches.

Desde la versión 2.10, Darcs utiliza la diferencia de paciencia [ cita requerida ] de forma predeterminada.

Historia

Darcs surgió de los esfuerzos de David Roundy por diseñar un nuevo formato de parches para GNU Arch en junio de 2002. Estas discusiones no llevaron a que se enviara código a Arch, pero sí a la concepción de la teoría de parches. Después de escribir una versión inicial de Darcs en C++ , la versión Haskell se escribió en otoño de 2002 y se lanzó al público en abril de 2003. Darcs 2.0 se lanzó en abril de 2008 e introdujo un formato de repositorio más robusto, así como una nueva semántica de parches llamada "darcs-2", destinada a minimizar los conflictos de fusión exponencial . [5] La estrategia de desarrollo actual se centra en implementar optimizaciones y agregar nuevas características, manteniendo al mismo tiempo el mismo formato de repositorio.

Defectos

Darcs ha sido criticado por sus problemas de rendimiento. [6] [7] Esto incluye desafíos relacionados con los algoritmos de fusión de Darcs 1.x, que mostraron un trabajo exponencial para fusionar ciertos conflictos. Aunque no se resolvió por completo en las versiones posteriores de Darcs, [8] la frecuencia de fusiones exponenciales mostró reducciones notables.

Todavía quedan errores en los que falla la fusión de conflictos recursivos. [9]

Véase también

Referencias

  1. ^ "Registro de cambios de darcs". Hackage . Consultado el 24 de junio de 2018 .
  2. ^ "darcs: un sistema de control de revisiones distribuido, interactivo e inteligente".
  3. ^ Roundy 2005, p. 2: 'Uno de los problemas que tuve con el darcs inicial de C++ fue que no tenía código de prueba unitaria. A las dos semanas de haber grabado el primer darcs, comencé a usar QuickCheck para probar las funciones de parches y el mismo día arreglé un error que había descubierto QuickCheck. QuickCheck facilita mucho la definición de propiedades que deben tener las funciones, que luego se prueban con datos generados aleatoriamente.'
  4. ^ Roundy, David (2008-10-21), "prefiero un acrónimo recursivo a uno vergonzoso", Darcs (Commit), Darcs Hub.
  5. ^ "Dos", Darcs
  6. ^ Marlow, Simon (7 de marzo de 2007), "Estado actual de Darcs", Usuarios de Darcs (lista de correo), OSUOSL.
  7. ^ Fendt, Robert (9 de enero de 2009), "Resumen de DVCS: ¿Un sistema para gobernarlos a todos?", Developer Network, vol. 1, Linux Foundation, archivado desde el original el 28 de febrero de 2009.
  8. ^ "Preguntas frecuentes sobre conflictos", Wiki, Darcs.
  9. ^ "Problema 1520 Error irrefutable en el patrón Datos.Tal vez.Solo a2", Bug Tracker, Darcs.

Enlaces externos