Un sistema de archivos de control de versiones es cualquier sistema de archivos de computadora que permite que un archivo de computadora exista en varias versiones al mismo tiempo. Por tanto, es una forma de control de revisiones . La mayoría de los sistemas de archivos de control de versiones conservan varias copias antiguas del archivo. Algunos limitan la cantidad de cambios por minuto o por hora para evitar almacenar una gran cantidad de cambios triviales. Otros, en cambio, toman instantáneas periódicas a cuyo contenido se puede acceder con una semántica similar al acceso normal a archivos.
Tecnologías similares
Respaldo
Un sistema de archivos de control de versiones es similar a una copia de seguridad periódica , con varias diferencias clave.
- Las copias de seguridad normalmente se activan de forma programada, mientras que el control de versiones se produce cuando cambia el archivo.
- Las copias de seguridad suelen ser para todo el sistema o para toda la partición, mientras que el control de versiones se realiza de forma independiente, archivo por archivo.
- Las copias de seguridad normalmente se escriben en medios separados, mientras que los sistemas de archivos de control de versiones escriben en el mismo disco duro (y normalmente en la misma carpeta, directorio o partición local).
En comparación con los sistemas de control de revisiones
Los sistemas de archivos de versiones proporcionan algunas de las características de los sistemas de control de revisiones . Sin embargo, a diferencia de la mayoría de los sistemas de control de revisiones, son transparentes para los usuarios y no requieren un paso de "confirmación" por separado para registrar una nueva revisión.
Sistema de archivos de diario
Los sistemas de archivos de control de versiones no deben confundirse con los sistemas de archivos de registro por diario . Mientras que los sistemas de archivos de registro por diario funcionan manteniendo un registro de los cambios realizados en un archivo antes de realizar esos cambios en ese sistema de archivos (y sobrescribiendo la versión anterior), un sistema de archivos de control de versiones mantiene copias anteriores de un archivo al guardar nuevos cambios. Las dos características tienen diferentes propósitos y no se excluyen mutuamente.
Almacenamiento de objetos
Algunas implementaciones de almacenamiento de objetos ofrecen control de versiones de objetos, como Amazon S3 .
Implementaciones
SU
Una implementación temprana de control de versiones, posiblemente la primera, fue en ITS del MIT . En ITS, un nombre de archivo constaba de dos partes de seis caracteres; si la segunda parte era numérica (consistía solo en dígitos), se trataba como un número de versión. Al especificar un archivo para abrirlo para lectura o escritura, se podría proporcionar una segunda parte de ">"; al leer, esto significaba abrir la versión con el número más alto del archivo; al escribir, significaba incrementar el número de versión más alto existente y crear la nueva versión para escritura.
Otra implementación temprana del control de versiones fue en TENEX , que se convirtió en TOPS-20 . [1]
Archivos-11 (RSX-11 y OpenVMS)
Un poderoso ejemplo de un sistema de control de versiones de archivos está integrado en el sistema operativo RSX-11 y OpenVMS de Digital Equipment Corporation . En esencia, cada vez que una aplicación abre un archivo para escribir, el sistema de archivos crea automáticamente una nueva instancia del archivo, con un número de versión adjunto al nombre. Los números de versión comienzan en 1 y van aumentando a medida que se crean nuevas instancias de un archivo. Cuando una aplicación abre un archivo para leerlo, puede especificar el nombre exacto del archivo, incluido el número de versión, o solo el nombre del archivo sin el número de versión, en cuyo caso se abre la instancia más reciente del archivo. El comando "purgar" DCL / CCL se puede utilizar en cualquier momento para administrar el número de versiones en un directorio específico. De forma predeterminada, se eliminarán todas las versiones con los números más altos de todos los archivos del directorio actual; este comportamiento se puede anular con el modificador / keep = ny / o especificando rutas de directorio y / o patrones de nombre de archivo. Los sistemas VMS a menudo están programados para purgar los directorios de usuarios en un horario regular; En ocasiones, los usuarios finales malinterpretan esto como una propiedad del sistema de control de versiones.
Linux
El 8 de febrero de 2004, Kiran-Kumar Muniswamy-Reddy, Charles P. Wright, Andrew Himmer y Erez Zadok (todos de la Universidad de Stony Brook ) propusieron una aplicación que era fácil de usar para muchos de los usuarios que la probaron. El sistema se desarrolló con software Linux, por lo que primero se operó en Linux. [2]
- NILFS : un sistema de archivos estructurado por registros que admite el control de versiones de todo el sistema de archivos y la creación de instantáneas continua. En esta lista, este es el único que es estable e incluido en el kernel de la línea principal.
- Tux3 : el cambio más reciente fue en 2014. [1]
- Next3 : la actualización más reciente fue en 2012.
- ext3cow : la versión más reciente fue en 2005.
LMFS
El sistema de archivos Lisp Machine admite el control de versiones. Esto fue proporcionado por implementaciones de MIT, LMI, Symbolics y Texas Instruments. Tal sistema operativo era Symbolics Genera .
Mac OS
A partir de Lion (10.7), macOS tiene una función llamada Versiones que permite guardar y examinar versiones anteriores de documentos de forma similar a Time Machine para aplicaciones escritas para usar Versiones. Sin embargo, esta funcionalidad tiene lugar en la capa de la aplicación, no en la capa del sistema de archivos; [3] Lion y las versiones posteriores no incorporan un verdadero sistema de archivos de control de versiones.
SCO OpenServer
HTFS , adoptado como el sistema de archivos principal para SCO OpenServer en 1995, admite el control de versiones de archivos. El control de versiones se habilita por directorio estableciendo el bit setuid del directorio, que se hereda cuando se crean los subdirectorios. Si el control de versiones está habilitado, se crea una nueva versión de archivo cuando se elimina un archivo o directorio, o cuando se abre un archivo existente con truncamiento. Las versiones no actuales permanecen en el espacio de nombres del sistema de archivos, bajo el nombre del archivo original pero con un sufijo adjunto que consta de un punto y coma y un número de secuencia de la versión. Todas, excepto la versión actual, están ocultas para las lecturas de directorio (a menos que se establezca la variable de entorno SHOWVERSIONS), pero las versiones son accesibles para todas las operaciones normales. La variable de entorno y la accesibilidad general permiten que las versiones se gestionen con las utilidades habituales del sistema de archivos, aunque también hay un comando "recuperar" que se puede utilizar para depurar y restaurar archivos, habilitar y deshabilitar el control de versiones en directorios, etc.
Otros
- Subversion tiene una característica llamada "autoversioning" donde una fuente WebDAV con un backend de subversion puede montarse como un sistema de archivos en sistemas que soportan este tipo de montaje (Linux, Windows y otros lo hacen) y guardar en ese sistema de archivos genera nuevas revisiones en el sistema de control de revisiones. [4]
- El software comercial de control de revisión y administración de configuración Clearcase también ha admitido "MVFS" (sistema de archivos de múltiples versiones) en HP-UX, AIX y Windows desde principios de la década de 1990.
Software relacionado
Los siguientes no son sistemas de archivos de control de versiones, pero permiten una funcionalidad similar.
- APFS [5] y ZFS admiten instantáneas y clones.
- Btrfs admite instantáneas. [6]
- HammerFS en DragonFlyBSD tiene la capacidad de almacenar revisiones en el sistema de archivos.
- NILFS , que admite instantáneas .
- Plan 9 's Fossil sistema de archivos puede proporcionar una función similar, tomando instantáneas periódicas (a menudo por hora) y ponerlos a disposición en / n / SNAP . Fossil puede archivar para siempre una instantánea en Venti (generalmente una instantánea cada día) y hacerla disponible en / n / dump . Si se realizan varios cambios en un archivo durante el intervalo entre instantáneas, solo se registrará el más reciente en la siguiente instantánea.
- Diseño de archivos Write Anywhere : las soluciones de almacenamiento de NetApp implementan un sistema de archivos llamado WAFL, que utiliza tecnología de instantáneas para mantener diferentes versiones de todos los archivos en un volumen.
- pdumpfs, creado por Satoru Takabayashi, es un sistema de respaldo diario simple similar al / n / dump de Plan 9, implementado en Ruby . Funciona como una herramienta de captura de instantáneas, lo que hace posible copiar un directorio completo a otra ubicación mediante el uso de enlaces físicos. Si se usa con regularidad, esto puede producir un efecto similar al control de versiones. [7]
- Microsoft Windows
- Instantáneas - es una característica introducida por Microsoft con Windows Server 2003. instantáneas permite tomar copias o instantáneas de un archivo o una carpeta en un volumen específico de copia de seguridad manual o automática en un punto específico en el tiempo.
- RollBack Rx: permite tomar instantáneas de las particiones del disco. Cada instantánea contiene solo las diferencias entre las instantáneas anteriores y solo toma unos segundos crearla. Puede usarse de manera confiable para mantener un sistema operativo Windows estable y / o protegido contra malware.
- GoBack (descontinuado): el software GoBack para Windows de Symantec permite la reversión de archivos, directorios o discos a estados anteriores. Puede registrar un máximo de 8 GB en cambios y detiene temporalmente la grabación de cada cambio en caso de una alta actividad de E / S.
- Versomatic : el software Versomatic de Acertant rastrea automáticamente los cambios en los archivos y archiva de forma preventiva una copia de un archivo antes de modificarlo.
- Cascade File System expone un repositorio de Subversion o Perforce a través de un controlador del sistema de archivos. El usuario aún debe decidir explícitamente cuándo realizar cambios.
- Los documentos de implementación de git llaman a git un "sistema de archivos direccionable de contenido con una interfaz de usuario VCS escrita encima". [8]
Ver también
- Respaldo
- Comparación de software de control de revisiones
- Copiar en escrito
- Almacenamiento de objetos
Referencias
- ^ Daniel G. Bobrow, Jerry D. Burchfiel, Daniel L. Murphy, Raymond S. Tomlinson, TENEX, A Paged Time Sharing System for the PDP-10 ( Comunicaciones de la ACM , vol. 15, págs. 1972)
- ^ Kiran-Kumar Muniswamy-Reddy, Charles P. Wright, Andrew Himmer y Erez Zadok (8 de febrero de 2004). "Un sistema de archivos de versiones versátil y orientado al usuario" . PRIMERO: Lenguaje y plantillas del sistema de archivos apilables .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ "Versiones de archivo Mac OS X Lion, parte 2" . Consultado el 28 de abril de 2012 .
- ^ Control de versiones con Subversion: Control de versiones de código abierto de próxima generación
- ^ "Acerca del sistema de archivos de Apple" . Documentación para desarrolladores de Apple . Consultado el 9 de junio de 2021 .
- ^ http://www.oracle.com/technetwork/articles/servers-storage-admin/advanced-btrfs-1734952.html Instantáneas, clones y viñeta secundaria "instantáneas".
- ^ Página de inicio de pDumpFS
- ^ "Git Internals" .
Git es fundamentalmente un sistema de archivos direccionable por contenido con una interfaz de usuario VCS escrita encima.
enlaces externos
- "Cómo hacer un almacenamiento de archivos" . WikiHow . Consultado el 31 de julio de 2018 .