Sistema de Versiones Concurrentes
Sistema de versiones simultáneas (CVS, también conocido como Sistema de versiones simultáneas) es un sistema de control de revisiones desarrollado originalmente por Dick Grune en julio 1986.
CVS funciona como interfaz para RCS, un sistema anterior que funciona con archivos únicos. Se expande sobre RCS al agregar soporte para el seguimiento de cambios a nivel de repositorio y un modelo cliente-servidor.
Lanzado bajo los términos de la Licencia Pública General GNU, CVS es software libre.
Diseño
CVS funciona como 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. 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 compresión delta para el 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 normalmente 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 para la seguridad. Por ejemplo, un enlace simbólico a un archivo confidencial se puede almacenar en el repositorio, lo que hace que el archivo confidencial sea accesible incluso cuando no está registrado. En lugar de enlaces simbólicos, se pueden registrar secuencias de comandos que requieren ciertos privilegios e intervención consciente para ejecutarse. CVS.
Operación
CVS etiqueta un solo proyecto (conjunto de archivos relacionados) que administra como un módulo. Un servidor CVS almacena los módulos que administra en su repositorio. Los programadores adquieren copias de los módulos al desproteger. 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. actualizar es adquirir o combinar 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 "registrar" sus cambios. Los servidores CVS pueden permitir el "acceso de lectura anónimo", donde los clientes pueden verificar y comparar versiones con una contraseña publicada en blanco o simple (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 su copia de trabajo actualizada incorporando los cambios de otras personas de forma regular. El cliente CVS maneja esta tarea en su mayoría de forma automática, lo que requiere una intervención manual solo cuando surge un conflicto de edición entre una modificación registrada y la versión local aún no verificada de un archivo. Los clientes también pueden usar la función "actualizar" comando 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 registro tiene éxito, los números de versión de todos los archivos implicados aumentan 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 archivo loginfo
de CVS, que puede activar una notificación por correo electrónico o convertir los datos de registro a un formato basado en la web.
CVS también puede mantener diferentes "sucursales" de un proyecto Por ejemplo, una versión lanzada del proyecto de software puede formar una rama, que se usa 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 realiza en el tronco y que, por lo general, las ramas deben ser de corta duración o históricas. Cuando se usan según lo diseñado, las sucursales se administran fácilmente y las operaciones de las sucursales son eficientes y rápidas.
Portabilidad
El software del servidor normalmente se ejecuta en Unix (aunque al menos el servidor CVSNT también es compatible con varias versiones de Microsoft Windows), mientras que los clientes CVS pueden ejecutarse en cualquier plataforma de sistema operativo importante.
Historia
Grune recordó:
Creé CVS para poder cooperar con mis estudiantes, 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-5, el otro era irregular, y podía trabajar en el proyecto sólo por las noches). Su proyecto funcionó de julio de 1984 a agosto de 1985. CVS fue llamado inicialmente cmt, por la razón obvia que nos permitió comprometer versiones independientemente.
Grune publicó el código el 23 de junio de 1986.
El código que eventualmente se convirtió en la versión actual de CVS comenzó con Brian Berliner en abril de 1989, con aportes posteriores de Jeff Polk y muchos otros colaboradores. Brian Berliner escribió un artículo que presenta sus mejoras al programa CVS, que describe cómo Prisma, un desarrollador externo que trabaja en el kernel de SunOS, amplió y usó internamente la herramienta y se lanzó para el beneficio de la comunidad bajo la licencia GPL. 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.
La última versión se publicó el 8 de mayo de 2008.
Adopción y sucesoras
(feminine)En el mundo del software de código abierto, el Sistema de Versión Concurrente (CVS) ha sido durante mucho tiempo la herramienta de elección para el control de versiones. Y con razón. CVS mismo es software libre, y su no restrictivo modus operandi y el apoyo a la operación en red, que permite a decenas de programadores dispersos geográficamente compartir su trabajo, se adapta muy bien a la naturaleza colaborativa del mundo de código abierto. CVS y su modelo de desarrollo semi-catótico se han convertido en piedras angulares de código abierto.
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 calidad de los desarrolladores. productividad. Los proyectos de reemplazo de CVS incluyen CVSNT y Subversion.
Contenido relacionado
Criptocanal
Información cuántica
Depósito de claves