Los deltas intercalados o tejido SCCS es un método utilizado por el sistema de control de código fuente para almacenar todas las revisiones de un archivo. Todas las líneas de todas las revisiones se "tejen" juntas en un solo bloque de datos, con instrucciones de control intercaladas que indican qué líneas se incluyen en qué revisiones del archivo. Los deltas intercalados se implementan tradicionalmente teniendo en cuenta los archivos de texto orientados a líneas, aunque nada impide que el método se aplique también a archivos binarios.
Los deltas intercalados fueron implementados por primera vez por Marc Rochkind en el SCCS en 1975. Su diseño hace que todas las versiones estén disponibles al mismo tiempo, por lo que se necesita el mismo tiempo para recuperar cualquier revisión. También contiene información suficiente para identificar al autor de cada línea (culpar) en un bloque. [1] Por otro lado, debido a que se analizan todas las revisiones de un archivo, cada operación se ralentiza a medida que se agregan más revisiones. El término delta intercalado fue acuñado más tarde en 1982 por Walter F. Tichy , autor del Revision Control System , que compara el tejido SCCS con su nuevo mecanismo delta inverso en RCS. [2]
Implementación en SCCS
En SCCS, el siguiente bloque de tejido
^ AI 1 ^ AD 2 foo ^ AE 2 bar ^ AI 2 baz ^ AE 2 ^ AE 1
representa un archivo que contiene las líneas "foo" y "bar" en la primera versión y las líneas "bar" y "baz" en la segunda revisión. La cadena "^ A" denota un carácter de control-A.
Las líneas de control en el bloque delta intercalado tienen el siguiente significado: [3]
- ^ AI serie de inicio de un bloque de líneas que se insertó con el número de serie llamado.
- ^ AD serie Comienza un bloque de líneas que se eliminó con el número de serie llamado.
- ^ AE serie Fin de bloque para un correspondiente ^ AI o ^ AD instrucción que utiliza el mismo número de serie.
Ventajas
El tiempo que lleva extraer cualquier revisión de dicho bloque delta intercalado es proporcional al tamaño del archivo. El tamaño del archivo es la suma del tamaño de todas las líneas diferentes en todas las revisiones.
Para extraer una revisión específica, se debe construir una matriz de estructuras, que indique si un bloque específico, etiquetado con un número de serie en los deltas intercalados, se copiará en la salida o no. La implementación original de SCCS necesita aprox. 100 bytes de almacenamiento por cada número de serie diferente en los deltas para saber cómo extraer una revisión específica. Por lo tanto, un archivo de historial de SCCS con un millón de deltas necesitaría 100 MBytes de memoria virtual para descomprimirse. El tamaño podría reducirse aprox. 32 bytes por delta si no se necesita la recuperación de archivos anotados.
Las ventajas del método de tejido son las siguientes:
- Tiempo de recuperación uniforme para todas las revisiones de un archivo.
- La posibilidad de anotar todas las líneas de un archivo con revisión del último cambio, autor del último cambio y hora del último cambio sin costo adicional.
- La posibilidad de fusionarse en sucursales que no se superponen sin costos adicionales.
Software que utiliza deltas intercalados
Bazaar tenía la intención de utilizar deltas intercalados en 2006, [5] pero se abandonó debido a un rendimiento deficiente después de que se implementó en bzr 0.1. Todavía proporciona un algoritmo de fusión de estilo tejido. [6]
Ver también
Referencias
- ^ http://www.basepath.com/aup/talks/SCCS-Slideshow.pdf Rochkind, Marc. "El sistema de control de código fuente (SCCS)". Transacciones IEEE sobre ingeniería de software 1, no. 4 (1975)
- ^ Tichy, Walter (1982). "Diseño, implementación y evaluación de un Sistema de Control de Revisión" . ICSE '82 Actas de la 6ª Conferencia Internacional sobre Ingeniería de Software : 58–67 . Consultado el 12 de junio de 2012 .
- ^ http://sccs.sourceforge.net/man/sccsfile.4.html página de manual de sccsfile (4)
- ^ "Introducción al tejido binario" . www.bitkeeper.org .
- ^ https://web.archive.org/web/20061006032137/http://blog.fxa.org/articles/2005/09/30/bzr-weaving-its-way-to-the-front
- ^ "BzrWeaveFormat" . Wiki de Bzr . Consultado el 16 de enero de 2020 .