Tutorial CVS 17/10/2001 Laboratorio Prácticas Integración de Sistemas CVS – Concurrent Version System Manuel Álvarez Díaz Departamento de Tecnoloxías da Información e as Comunicacións Facultade de Informática Universidade de A Coruña mad@udc.es Contenido n Laboratorio 2.1 n CVS n n n n n n Ejemplo de creación/utilización de CVS 16/10/2001 Integración de Sistemas Introducción Características Elementos Básicos Configuración/Inicialización Comandos elementales Laboratorio 2.1 - Integración de Sistemas 2 1 Tutorial CVS 17/10/2001 Laboratorio 2.1 n n Arranque de PCs por RED Cada PC tiene una InCom TCP/IP Bootprom a la que la BIOS, una vez ha inicializado el HW de la máquina, pasa el control. Utiliza protocolos DHCP/BOOTP & TFTP. n n Muestra un menú con los modos de arranque configurados: 1. 2. 3. 4. n n n n n NT Local Linux RedHat Local Linux por NFS RedHat 7.1 (kernel 2.2.19) Linux por NFS RedHat 7.1 (kernel 2.4.2-2) En función de la opción La EPROM continúa un arranque normal de una de las particiones de la máquina (la de NT o Linux, según opción). Arranque por red. n n 16/10/2001 Laboratorio 2.1 - Integración de Sistemas 3 Laboratorio 2.1 (II) rostro imaxes S H E W L E T P A C K A R D D S H E W L E T P A C K A R D NIS+ cuentas NFS imágenes meiga01 meiga02 meiga03 D S meiga06 meiga07 16/10/2001 Integración de Sistemas D S D S R O P fe s ro P io n l W a s ta rk o io n 6 0 meiga18 R O P fe s ro P io n l W a s ta rk o io n 6 0 meiga19 meiga20 D S D S R O P fe s ro P io n l W a s ta rk o io n 6 0 meiga08 D S D S fe s ro P io n l W a s ta rk o io n 6 0 fe s ro P io n l W a s ta rk o io n 6 0 R O P fe s ro P io n l W a s ta rk o io n 6 0 R O P R O P fe s ro P io n l W a s ta rk o io n 6 0 D S fe s ro P io n l W a s ta rk o io n 6 0 D S R O P fe s ro P io n l W a s ta rk o io n 6 0 R O P meiga17 D S R O P fe s ro P io n l W a s ta rk o io n 6 0 meiga05 meiga04 D S R O P D S R O P fe s ro P io n l W a s ta rk o io n 6 0 Laboratorio 2.1 - Integración de Sistemas R O P fe s ro P io n l W a s ta rk o io n 6 0 4 2 Tutorial CVS 17/10/2001 Concurrent Version System n n n n n n n n CVS es un sistema (cliente/servidor) de control de versiones. Permite que grupos de personas trabajen simultáneamente sobre grupos de archivos, de forma distribuida (desde localizaciones físicas remotas). 1986 primeros algoritmos de resolución de conflictos. 1989 primera versión. Mantiene un “repositorio” central con las versiones más recientes de los archivos. El CVS es el encargado de unificar las modificaciones que puedan hacer cada uno de los usuarios, creando un completo historial de la evolución del desarrollo de un proyecto. Un usuario puede realizar una copia local de los archivos mediante un “check out” o ver el log de cambios de un archivo. Si posteriormente se añaden nuevos archivos o modificaciones de existentes en el repositorio, el usuario puede actualizar (“update”) su copia. 16/10/2001 Laboratorio 2.1 - Integración de Sistemas 5 Introducción n Cuando un usuario modifica un archivo puede añadirlo al repositorio haciendo un “commit”. n n No se puede añadir un cambio sobre el repositorio directamente si la copia local no se corresponde con la última versión del repositorio. n n Si un usuario modifica un archivo que ha sido modificado previamente por otro, no podrá hacer un “commit” de sus cambios hasta que realice un “update ” que intente mezclar sus cambios con los realizados por el otro usuario. Cuando un usuario no necesita disponer de la copia local, puede liberarla (“release”) y posteriormente borrar su directorio local. 16/10/2001 Integración de Sistemas Sólo se deben de realizar “commits” de código ya probado (al menos, asegurar que compila) !!! Laboratorio 2.1 - Integración de Sistemas 6 3 Tutorial CVS 17/10/2001 Características CVS n Acceso concurrente a múltiples desarrolladores. Varias líneas de desarrollo en un único repositorio. Agrupación de fuentes en módulos. Marcación simbólica de versiones de fuentes. Diferencias entre versiones. n Soporte de log configurable n n n n n n n ... con apoyo de programas externos. Soporte de archivos binarios. Respuesta automática ante eventos. 16/10/2001 Laboratorio 2.1 - Integración de Sistemas 7 ¿Qué no es CVS? n No es un constructor aplicaciones (make, ant). n n No sustituye al organizador del proyecto n n n n No almacena información sobre bugs actuales. No almacena los grupos de archivos involucrados en un commit múltiple (sólo mantienen el comentario común). No es un depurador/probador de aplicaciones No tiene un modelo de proceso de construcción de sistemas. 16/10/2001 Integración de Sistemas Sólo trata conflictos de forma textual sobre un mismo archivo, no puede resolver conflictos de lógica de programa. No posee control de cambios n n Necesario un director, planificador. No anula la comunicación entre desarrolladores. n n Sólo almacena archivos. Laboratorio 2.1 - Integración de Sistemas 8 4 Tutorial CVS 17/10/2001 Elementos básicos n n n n n Repositorio: El directorio o árbol de directorios que almacena las copias de los archivos. Módulo: Un directorio específico (o mini-árbol de directorios) del repositorio. RCS: Revision Control System. Conjunto de utilidades del CVS para realizar procesamientos de versiones. Check Out: Hacer una copia de un archivo que se encuentra en el repositorio, para examinarlo o trabajar con él. Revisión: Una marca numérica o alfanumérica que identifica la versión de un archivo. n 1.1 – 1.2 – 1.3 - ... 16/10/2001 Laboratorio 2.1 - Integración de Sistemas 9 Datos utilizados por CVS n En el repositorio n El módulo CVSROOT contiene archivos de configuración específicos para el CVS: n n n n n n n n Estos archivos pueden ser modificados por cualquier usuario: En la copia local del usuario n CVS/Entries n CVS/Repository n CVS/Root n n n 16/10/2001 Integración de Sistemas commitinfo: acciones en commits. loginfo: acciones sobre comentarios de commits. history: Historial de acciones sobre el repositorio. cvsignore: Lista de archivos a ser ignorados por CVS (ó variable de entorno $CVSIGNORE). [e.g. *.zip. Añadirlo a CVSROOT] modules: Definición lógica de los módulos del repositorio. notify: Notificación de acciones sobre edición. Lista de todos los archivos locales en el repositorio El nombre del módulo al que pertenece el directorio local. El CVSROOT utilizado en la operación de ‘checkout’. Laboratorio 2.1 - Integración de Sistemas 10 5 Tutorial CVS 17/10/2001 Configuración CVS n n Para conectarnos a un repositorio es necesario conocer su localización y sus mecanismos de acceso: CVSROOT. Repositorio local (o accesible via NFS): n n CVSROOT=/home/cvsroot Repositorio remoto (protocolos más utilizados): n Password Server Protocol CVSROOT=:pserver:user@hostname.hostdomain:/home/cvsroot n n n n n Normalmente para repositorios con usuarios anónimos. RSH/SSH (Variable de entorno CVS_RSH=ssh; rsh por defecto) CVSROOT=:ext:user@hostname.hostdomain:/home/cvsroot Es necesario poseer una cuenta de usuario en la máquina remota. Si no se establece la variable de entorno CVSROOT es necesario indicarla en comandos como ‘checkout’ con la opción –d. Para los comandos que se ejecutan dentro de la estructura de directorios de módulos locales no es necesario indicar –d (se encuentra replicada dentro de los directorios CVS). 16/10/2001 Laboratorio 2.1 - Integración de Sistemas 11 Import/Export n cvs import –m ‘comment’ module vendor-tag release-tag n n n cvs export –r rev|-d date module n n 16/10/2001 Integración de Sistemas Instala un conjunto de archivos dentro del repositorio, y crea un módulo para ellos. Se mantiene la organización de directorios original. Crea un módulo y añade a él todos los archivos/directorios del directorio en el que se ejecute el comando Extrae archivos de un módulo para producir una distribución independiente del CVS. Es necesario indicar un “tag” o una “fecha”. Laboratorio 2.1 - Integración de Sistemas 12 6 Tutorial CVS 17/10/2001 Principales comandos CVS n cvs [cvs-options] command [cmd-options] [files] n checkout (co) update commit (ci) Obtiene una copia local de los fuentes. Actualiza las copias locales de archivos. Aplica los cambios locales al repositorio. n add n n n remove tag Añade un nuevo archivo/directorio a un módulo. Borra una entrada de un módulo. Etiqueta los archivos locales. n status Muestra el estado de los archivos locales. n log Muestra el historial de los archivos (información indicada en los commit) (recursivo por directorios) n diff Compara archivos locales con versiones del repositorio (o distintas versiones). n R: Repositorio; W: espacio de datos local 16/10/2001 Laboratorio 2.1 - Integración de Sistemas R à W R à W W à R 13 Referencias n Página oficial CVS: n n Desde linux: n n info cvs Ayuda de cvs: n 16/10/2001 Integración de Sistemas http://www.cvshome.org cvs --help <comando> Laboratorio 2.1 - Integración de Sistemas 14 7