CVS

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 ) ( 2008-05-08 )
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] .

Conceptos básicos

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.

Conceptos básicos

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.

Historia y estado

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/ .

Desventajas

Notas

  1. Contenido de /ccvs/NOTICIAS
  2. NOTICIAS 1.11.23 . Archivado desde el original el 27 de diciembre de 2021. Consultado el 14 de abril de 2022.
  3. Price D.R. Sistema de Versiones Concurrentes - Noticias ¡Lanzamiento de la versión 1.12.13 de la función CVS!  (Inglés) - 2005.
  4. El proyecto de código abierto de cvs en Open Hub: página de idiomas - 2006.
  5. https://cvs.savannah.nongnu.org/viewvc/cvs/ccvs/README?view=markup
  6. [https://web.archive.org/web/20181116130105/http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/ChangeLog Archivado el 16 de noviembre de 2018 en Wayback Machine [fuentes] Log of / cvs/ccvs/ChangeLog]
  7. CVS está disponible, Subversion está en Archivado el 25 de marzo de 2010.  (Inglés) Revista Red Hat, agosto de 2005
  8. CVS - sourceforge Archivado el 10 de junio de 2010.
  9. Sistema de control de versiones CVS . Consultado el 25 de julio de 2009. Archivado desde el original el 8 de julio de 2010.
  10. Sistema de Versiones Concurrentes CVS . Consultado el 12 de enero de 2005. Archivado desde el original el 7 de diciembre de 2006.
  11. CiteSeerX - CVS II: Paralelización del desarrollo de software . Consultado el 12 de enero de 2005. Archivado desde el original el 5 de junio de 2007.
  12. Evaluación de CVS en el libro de Mercurial . Archivado el 7 de septiembre de 2013 en Wayback Machine .

Enlaces