Articulo de referencia

Darcs

{{cite web |title=Changelog for darcs |url=https://hackage.haskell.org/package/darcs/changelog |work=Hackage |access-date=2018-06-24}} "},"latest release version":{"wt":" {{wiki...

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

Modelo

Darcs trata los parches como elementos de primera clase . Para el usuario, un repositorio puede considerarse un conjunto de parches, donde cada parche no está necesariamente ordenado con respecto a los demás; es decir, el conjunto de parches es solo un conjunto parcialmente ordenado . En muchos casos, los parches pueden transmitirse de forma independiente entre varios repositorios.

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

Los parches de un repositorio están ordenados 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:

  • cambios de línea,
  • creación y eliminación de archivos y directorios,
  • mover archivos y directorios,
  • Sustitución de palabras (utilizada normalmente en la refactorización de código, por ejemplo, cambiar el nombre de todas las apariciones de "foo" a "bar" en un archivo determinado).

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 patience diff por defecto.

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 incorporara ningún código a Arch, pero sí dieron lugar a la concepción de la teoría de los parches. Después de escribir una versión inicial de Darcs en C++ , la versión en Haskell se escribió en otoño de 2002 y se publicó en abril de 2003. Darcs 2.0 se publicó 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 exponenciales . [ 5 ] La estrategia de desarrollo actual se centra en implementar optimizaciones y añadir nuevas características, manteniendo el mismo formato de repositorio.

deficiencias

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 mostraban 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 sí mostró reducciones notables.

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

Véase también

Referencias

  1. "Registro de cambios para darcs" . Hackage . Consultado el 24 de junio de 2018 .
  2. "Registro de cambios para darcs-2.18.5" . 9 de enero de 2025. Consultado el 18 de enero de 2025 .
  3. Roundy 2005 , p. 2: «Uno de los problemas que tuve con la versión inicial de darcs en C++ fue que no tenía código para pruebas unitarias. A las dos semanas de la primera grabación de darcs, empecé a usar QuickCheck para probar las funciones de parche, y ese mismo día corregí un error que QuickCheck había descubierto. QuickCheck facilita enormemente la definición de las propiedades que deben tener las funciones, las cuales se prueban posteriormente con datos generados aleatoriamente».
  4. Roundy, David (21/10/2008), "prefiero el acrónimo recursivo (sic) al que causa vergüenza", 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 del original el 28 de febrero de 2009. .
  8. "Preguntas frecuentes sobre conflictos", Wiki , Darcs.
  9. "Problema 2370: Falló el patrón irrefutable para el patrón Data.Maybe.Just a2'o", Rastreador de errores , Darcs , consultado el 19 de junio de 2026.
  • Roundy, David (2005), "Darcs: gestión de versiones distribuidas en Haskell", Actas del taller ACM SIGPLAN de 2005 sobre Haskell , Tallin, Estonia, pp. 1–4 , doi : 10.1145/1088348.1088349 , ISBN  1-59593-071-X, S2CID 13932981 {{citation}}: CS1 mantenimiento: falta el editor de ubicación ( enlace )
  • Sitio web oficialEdita esto en Wikidata
Obtenido de " https://en.wikipedia.org/w/index.php?title=Darcs&oldid=1360645633 "