CVS | |
---|---|
Tipo de | sistema de control de versiones centralizado [d] |
Desarrollador | El equipo de CVS [d] |
Escrito en | C [4] |
Sistema operativo | Sistema operativo similar a Unix |
Primera edición | 19 de noviembre de 1990 [1] |
ultima versión | 1.11.23 [2] (8 de mayo de 2008 ) |
versión beta |
|
Licencia | Licencia Pública General GNU, versión 1.0 o posterior [d] [5] |
Sitio web | nongnu.org/cvs/ ( inglés) |
CVS ( eng. Concurrent Versions System - sistema de versiones simultáneas ) es un sistema de control de versiones centralizado que fue popular en la década de 1990 y principios de la de 2000. Mantiene un historial de cambios en un conjunto específico de archivos, generalmente código fuente de software , y facilita que un grupo de personas trabajen juntas en el mismo proyecto. Distribuido bajo los términos de GNU GPL .
Desde finales de la década de 2000, se ha interrumpido el desarrollo activo del sistema (la última versión se lanzó en mayo de 2008 ), solo se realizan correcciones menores en el código fuente [6] . Sistema considerado obsoleto [7] [8] [9] .
CVS utiliza una arquitectura cliente-servidor . Por lo general, el cliente y el servidor están conectados a través de una red local o de Internet , pero también pueden ejecutarse en la misma máquina si desea mantener el historial de versiones de un proyecto local. El software del servidor generalmente se ejecuta en Unix (aunque hay un servidor CVS para Windows NT ), mientras que los clientes CVS están disponibles en todos los sistemas operativos populares .
El servidor almacena las versiones actuales del proyecto y el historial de cambios en un repositorio especial ( repository ), y el cliente se conecta a él para obtener la versión que necesita o escribir una nueva. Habiendo recibido la versión requerida del servidor ( check-out ), el cliente crea una copia local del proyecto (o parte de él), la llamada copia de trabajo. Una vez realizados los cambios necesarios en los archivos de la copia de trabajo, se envían al servidor ( check-in ).
Varios clientes pueden trabajar en copias de un proyecto al mismo tiempo. Cuando envían los resultados, el servidor intenta fusionar sus cambios en el repositorio. Si esto falla, como cuando dos clientes han cambiado las mismas líneas en un archivo en particular, el servidor no aceptará los cambios del último check-in e informará el conflicto al cliente, que debe corregirse manualmente. Si la operación de registro es exitosa, los números de versión de todos los archivos afectados se incrementan automáticamente y el servidor escribe el comentario, la fecha y el nombre de usuario en su registro.
Los clientes también pueden comparar diferentes versiones de archivos, solicitar un historial de cambios completo u obtener una imagen histórica de un proyecto por fecha específica o número de versión. Muchos proyectos de código abierto permiten el acceso de lectura anónimo, que se introdujo por primera vez en OpenBSD . Esto significa que los clientes pueden consultar y comparar versiones de archivos sin contraseña; solo las operaciones de registro que modifican datos en el repositorio requieren una contraseña.
Además, los clientes pueden usar el comando de actualización para sincronizar la copia local del proyecto con información en el servidor , lo que evita volver a descargar todo el proyecto.
CVS también puede contener diferentes ramas de un proyecto. Por ejemplo, una versión estable de un proyecto puede estar en una sola rama que solo contiene correcciones de errores, mientras que el desarrollo activo puede estar en una rama paralela que incluye mejoras o cambios significativos desde el lanzamiento de la versión estable.
CVS usa la compresión delta para almacenar eficientemente diferentes versiones del mismo archivo.
Los proyectos en CVS se almacenan como módulos, un módulo es un conjunto de archivos de proyecto. Un servidor CVS puede servir a múltiples módulos; todos los módulos se almacenan en el repositorio. Una copia local de un módulo obtenido con un cliente CVS se denomina copia de trabajo.
operación de check-out : extraer todo el módulo de CVS y crear una copia de trabajo; check-in : realizar cambios locales en el repositorio. La operación de actualización está actualizando el proyecto local desde CVS.
Rama ( rama inglesa ) - una dirección independiente de modificación del proyecto, que puede contener una serie de versiones sucesivas; una rama puede desarrollarse en paralelo con otras ramas; la rama principal ( en inglés main trunk o HEAD ) siempre está ahí.
Revisión ( revision ) es una de las versiones de un solo archivo.
Una de las versiones de todo el producto es un "lanzamiento" ( lanzamiento , el término "versión" no se usa en absoluto en CVS). Se adjunta una etiqueta especial ( etiqueta ) a la versión , una etiqueta también se puede asignar a un archivo separado, pero esto rara vez se hace, por lo general, una colección de archivos de ciertas revisiones (versiones) se marca con una etiqueta.
CVS es una evolución de un sistema de control de versiones anterior llamado Sistema de control de revisión (RCS), que todavía se usa para trabajar con archivos individuales, pero no con proyectos completos. Dick Grun proporcionó [10] una breve reseña histórica de CVS en su página:
CVS se creó para poder trabajar con dos de mis alumnos en el compilador de C ACK (Amsterdam Compiler Kit). Los tres teníamos un horario casi incompatible (un estudiante tenía un trabajo fijo, el segundo aparecía irregularmente y yo solo podía trabajar en el proyecto por las tardes). Su proyecto duró desde julio de 1984 hasta agosto de 1985 . CVS originalmente se llamaba cmt , debido a que nos permitía hacer commit de versiones de forma independiente (del inglés commit - fix, commit).
El código vio la luz por primera vez en la conferencia mod.sources el 23 de junio de 1986 .
El código que finalmente se convirtió en la versión actual de CVS se inició con Brian Berliner en abril de 1989, con adiciones posteriores de Jeff Polk y otros. Brian Berliner escribió [11] un documento que describe las mejoras adquiridas por CVS durante su uso interno en Prisma, un desarrollador externo del kernel de SunOS , después de lo cual Brian lo lanzó al público bajo la licencia GPL .
El proyecto es apoyado por un grupo de voluntarios. Cabe destacar que la versión de CVS para Microsoft Windows , separada en un proyecto CVSNT separado , expande activamente las capacidades del sistema, incluso transfiriendo los cambios a Unix bajo el nombre CVSNT.
La relación de CVS con el proyecto GNU puede ser ambigua: en una página, el sitio GNU distribuye el programa como un "paquete GNU" y en otra, CVS aparece bajo "otro proyecto GPL". En el servidor FTP, el programa se encuentra en el directorio /non-gnu/ .
Sistemas de control de versiones ( categoría ) | |
---|---|
Solo locales | |
Servidor de cliente | |
Repartido | |
URI | esquemas|
---|---|
Oficial | |
no oficial |