El sistema de versiones simultáneas ( CVS , también conocido como el sistema de versiones simultáneas ) es un sistema de control de revisiones desarrollado originalmente por Dick Grune en julio de 1986. [1]
Desarrollador (es) | El equipo de CVS |
---|---|
Versión inicial | 19 de noviembre de 1990 |
Lanzamiento estable | 1.11.23 / 8 de mayo de 2008 |
Versión de vista previa | 1.12.13 / 26 de julio de 2006 |
Repositorio | |
Escrito en | C |
Sistema operativo | Tipo Unix , Windows |
Tipo | Control de revisión |
Licencia | Licencia pública general GNU |
Sitio web | cvs |
CVS funciona como una interfaz para RCS , un sistema anterior que opera en archivos individuales. Se expande sobre RCS al agregar soporte para el seguimiento de cambios a nivel de repositorio y un modelo cliente-servidor. [2]
Publicado bajo los términos de la Licencia Pública General GNU , CVS es un software libre .
Diseño
CVS funciona como una interfaz para el sistema de control de revisiones (RCS), un sistema de control de versiones más antiguo que administra archivos individuales pero no proyectos completos. Se expande sobre RCS al agregar soporte para el seguimiento de cambios a nivel de repositorio y un modelo cliente-servidor. [2] Los archivos se rastrean utilizando el mismo formato de historial que en RCS, con un directorio oculto que contiene un archivo de historial correspondiente para cada archivo en el repositorio.
CVS usa la compresión delta para un almacenamiento eficiente de diferentes versiones del mismo archivo. Esto funciona bien con archivos de texto grandes con pocos cambios de una versión a la siguiente. Este suele ser el caso de los archivos de código fuente. Por otro lado, cuando se le dice a CVS que almacene un archivo como binario, mantendrá cada versión individual en el servidor. Esto se usa generalmente para archivos que no son de texto, como imágenes ejecutables, donde es difícil crear deltas compactos entre versiones.
CVS excluye los enlaces simbólicos porque cuando se almacenan en un sistema de control de versiones pueden representar un riesgo de seguridad. Por ejemplo, un enlace simbólico a un archivo confidencial se puede almacenar en el repositorio, haciendo que el archivo confidencial sea accesible incluso cuando no está registrado. En lugar de enlaces simbólicos, los scripts que requieren ciertos privilegios e intervención consciente para ejecutarse pueden registrarse en CVS. [ cita requerida ]
Operación
CVS etiqueta un solo proyecto (conjunto de archivos relacionados) que administra como módulo . Un servidor CVS almacena los módulos que administra en su repositorio . Los programadores adquieren copias de los módulos comprobando . Los archivos extraídos sirven como copia de trabajo , sandbox o espacio de trabajo . Los cambios en la copia de trabajo se reflejan en el repositorio al confirmarlos . Para la actualización sea adquirir o fusionar los cambios en el repositorio con la copia de trabajo.
CVS utiliza una arquitectura cliente-servidor : un servidor almacena la (s) versión (es) actual (es) de un proyecto y su historial, y los clientes se conectan al servidor para "verificar" una copia completa del proyecto, trabajar en esta copia y luego más tarde "registra" sus cambios. Los servidores CVS pueden permitir "acceso de lectura anónimo", [3] en el que los clientes pueden verificar y comparar versiones con una contraseña en blanco o simplemente publicada (por ejemplo, "anoncvs"); solo el registro de cambios requiere una cuenta personal y una contraseña en estos escenarios. Varios desarrolladores pueden trabajar en el mismo proyecto al mismo tiempo, cada uno editando archivos dentro de su propia "copia de trabajo" del proyecto y enviando (o registrando ) sus modificaciones al servidor. Para evitar conflictos, el servidor solo acepta cambios realizados en la versión más reciente de un archivo. Por lo tanto, se espera que los desarrolladores mantengan actualizada su copia de trabajo incorporando los cambios de otras personas de forma regular. Esta tarea la maneja en su mayoría automáticamente el cliente CVS, requiriendo intervención manual solo cuando surge un conflicto de edición entre una modificación registrada y la versión local de un archivo que aún no se ha verificado. Los clientes también pueden usar el comando "actualizar" para actualizar sus copias locales con la versión más reciente en el servidor. Los clientes también pueden comparar versiones, solicitar un historial completo de cambios o consultar una instantánea histórica del proyecto (por ejemplo, basado en una fecha determinada). Si la operación de verificación tiene éxito, los números de versión de todos los archivos involucrados se incrementan automáticamente y el servidor escribe una línea de descripción proporcionada por el usuario, la fecha y el nombre del autor en sus archivos de registro . CVS también puede ejecutar scripts de procesamiento de registros externos especificados por el usuario después de cada confirmación. Estos scripts se instalan mediante una entrada en el loginfo
archivo de CVS , que puede activar una notificación por correo electrónico o convertir los datos de registro a un formato basado en web.
CVS también puede mantener diferentes "ramas" de un proyecto. Por ejemplo, una versión publicada del proyecto de software puede formar una rama, utilizada para corregir errores, mientras que una versión en desarrollo actual, con cambios importantes y nuevas características, puede formar una rama separada. CVS asume que la mayor parte del trabajo se lleva a cabo en el tronco y que las ramas generalmente deben ser de corta duración o históricas. Cuando se usa según lo diseñado, las sucursales se administran fácilmente y las operaciones de las sucursales son eficientes y rápidas. [4] [5]
Portabilidad
El software del servidor normalmente se ejecuta en Unix (aunque al menos el servidor CVSNT también admite varias versiones de Microsoft Windows ), mientras que los clientes CVS pueden ejecutarse en cualquier plataforma de sistema operativo principal .
Historia
Grune recordó [6] :
Creé CVS para poder cooperar con mis alumnos, Erik Baalbergen y Maarten Waage, en el compilador ACK ( Amsterdam Compiler Kit ) C. Los tres teníamos horarios muy diferentes (un estudiante era un trabajador constante de 9 a 5, el otro era irregular y yo podía trabajar en el proyecto solo por las tardes). Su proyecto se desarrolló entre julio de 1984 y agosto de 1985. CVS se llamó inicialmente cmt, por la razón obvia de que nos permitía enviar versiones de forma independiente.
Grune publicó el código el 23 de junio de 1986. [7]
El código que eventualmente se convirtió en la versión actual de CVS comenzó con Brian Berliner en abril de 1989, con el aporte posterior de Jeff Polk y muchos otros colaboradores. Brian Berliner escribió un artículo presentando sus mejoras al programa CVS, que describe cómo la herramienta fue extendida y utilizada internamente por Prisma, un desarrollador externo que trabaja en el kernel SunOS, y fue lanzada para beneficio de la comunidad bajo la GPL. [8] El 19 de noviembre de 1990, la versión 1.0 de CVS se envió a la Free Software Foundation para su desarrollo y distribución. [9]
La última versión se publicó el 8 de mayo de 2008. [10]
Adopción y sucesores
En el mundo del software de código abierto, el Concurrent Version System (CVS) ha sido durante mucho tiempo la herramienta elegida para el control de versiones. Y con razón. El CVS en sí es software libre, y su modus operandi no restrictivo y su soporte para operaciones en red, que permiten que decenas de programadores dispersos geográficamente compartan su trabajo, encaja muy bien con la naturaleza colaborativa del mundo del código abierto. CVS y su modelo de desarrollo semi-caótico se han convertido en piedras angulares del código abierto. [11]
Con el tiempo, los desarrolladores han creado nuevos sistemas de control de versiones basados en CVS para agregar funciones, alterar el modelo operativo y mejorar la productividad de los desarrolladores. Los proyectos de reemplazo de CVS incluyen CVSNT y Subversion . [12] [13]
Ver también
- Cervisia
- OpenGrok
- StatCVS
- TortugaCVS
- ViewVC
Notas
- ^ "CVS - Sistema de versiones concurrentes v1.12.12.1: descripción general" . Archivado desde el original el 15 de abril de 2012 . Consultado el 9 de diciembre de 2011 .
- ^ a b Stopak, Jacob (30 de noviembre de 2019). "La evolución de los componentes internos del sistema de control de versiones (VCS)" . Consultado el 22 de septiembre de 2020 .
- ^ Charles D. Cranor; Theo de Raadt (1999). "Apertura del repositorio de origen con CVS anónimo, USENIX 1999" (PDF) .
- ^ Collins-Sussman, Ben; Greg Ward (septiembre de 2004). "Usuarios de Subversion: Re: Rendimiento (Subversion vs. CVS)" . usuarios de subversion . Consultado el 7 de julio de 2010 .
- ^ West, Adrian (julio de 2004). "Corrección de rendimiento de la etiqueta de ramificación cvs" . Archivado desde el original el 3 de agosto de 2009 . Consultado el 7 de julio de 2010 .
- ^ "Sistema de Versiones Simultáneas CVS" . dickgrune.com .
- ^ Dick Grune (3 de julio de 1986). "CVS, un front-end RCS (cvs)" . Grupo de noticias : mod.sources . Usenet: [email protected] . Consultado el 14 de septiembre de 2016 .
- ^ "CVS II: desarrollo de software paralelo - Berliner (ResearchIndex)" . Archivado desde el original el 9 de septiembre de 2004.
- ^ "[cvs] Contenido de / ccvs / NEWS" . cvs.savannah.gnu.org .
- ^ "Sistema de versiones concurrentes - Noticias: ¡Lanzamiento de la versión 1.11.23 estable de CVS! [Savannah]" . savannah.nongnu.org .
- ^ Ben Collins-Sussman, Control de versiones con Subversion para Subversion 1.1, 2005
- ^ "Preguntas frecuentes de Subversion: ¿Por qué existe este proyecto?" . Subversión . Consultado el 21 de septiembre de 2009 .
- ^ "Disipando Subversion FUD" . Ben Collins-Sussman. Archivado desde el original el 18 de julio de 2011 . Consultado el 30 de junio de 2010 .
Referencias
- David Thomas ; Andrew Hunt (2003). Control de versiones pragmático mediante CVS . Los programadores pragmáticos. ISBN 0-9745140-0-4.
- Jennifer Vesperman (2006). CVS esencial (2e ed.). O'Reilly. ISBN 0-596-52703-9.
- Per Cederqvist; et al. Gestión de versiones con CVS . ISBN 0-9541617-1-8. Archivado desde el original el 5 de agosto de 2014 . Consultado el 25 de noviembre de 2009 .
- Karl Franz Fogel; Moshe Bar . Desarrollo de código abierto con CVS . ISBN 1-932111-81-6. Archivado desde el original el 16 de julio de 2014 . Consultado el 5 de febrero de 2002 .
enlaces externos
- Página web oficial
- Gestión de versiones con CVS : manual para CVS 1.12.13, de Per Cederqvist et al.