II Curso de introducción a CVS
Álvaro Sánchez-Mariscal (
[email protected])
Grupo de usuarios de
linux
Univ. Carlos III de Madrid
2 de abril de 2003
Contenido
1
Contenido
¿Qué es CVS?.
¿Qué no es CVS?.
Conceptos básicos.
Método pserver vs. método ssh.
Una sesión de trabajo típica.
Comandos más importantes.
Conflictos.
Comentarios.
Direcciones de interés.
Dudas y preguntas.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
¿Qué es CVS? (I)
2
¿Qué es CVS? (I)
Concurrent Versions System.
Sistema cliente/servidor de control de versiones.
Mantiene un repositorio de software centralizado, permitiendo que
grupos de personas trabajen simultáneamente sobre él de forma dis-
tribuída.
CVS se encarga de unificar las modificaciones que puedan hacer cada
de los usuarios.
Muy útil para proyectos en los que haya involucradas una o más per-
sonas.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
¿Qué es CVS? (y II)
3
¿Qué es CVS? (y II)
Figura 1: Esquema del funcionamiento de CVS
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
¿Qué no es CVS
4
¿Qué no es CVS
No construye aplicaciones (make), sólo almacena archivos.
No sustituye la figura de coordinador o jefe de proyecto.
No anula la comunicación entre desarrolladores, sólo trata conflictos
de forma textual.
No tiene un control de cambios sobre bugs.
No depura ni prueba aplicaciones.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Conceptos básicos (I)
5
Conceptos básicos (I)
Repositorio El directorio en el servidor a partir del cual se almacenan
todos los ficheros (ej: /home/cvs).
Módulo Un directorio específico del repositorio. Cada proyecto se alma-
cena en un módulo (ej: practica-iissoo).
Check-out Operación que sirve para descargar el contenido de un módu-
lo. Se hace una sóla vez.
Commit Operación que sirve para subir los cambios que un desarrolla-
dor ha hecho sobre su copia local. Se suele hacer tras una sesión de
trabajo, y sobre código que funciona (o que al menos compila).
Update Operación que sirve para actualizar la copia local con los cam-
bios que hayan podido hacer otros desarrolladores. Se hace siempre
antes de una sesión de trabajo.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Conceptos básicos (y II)
6
Conceptos básicos (y II)
Revisión Indicador numérico o alfanumérico que existe sobre cada fi-
chero del proyecto (ej: 1.3).
Rama Versión especial que se puede crear sobre una versión estable de
un repositorio para optimizar código, probar nuevas funcionalidades,
etc.
Tag Agrupación lógica que se puede hacer sobre un estado concreto de
un proyecto (ej: VERSION 1 0). Un tag concreto no es más que las
revisiones que tenían los fuentes en el momento de crear el tag.
$CVSROOT Variable de entorno definida en los clientes que indica el méto-
do de conexión con el servidor, el usuario, la ruta al repositorio en el
servidor, etc (ej: :pserver:
[email protected]:2401:/home/cvs).
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Método pserver vs. SSH
7
Método pserver vs. SSH
La autenticación por pserver carece totalmente de seguridad.
Tanto las contraseñas como los ficheros viajan por la red sin cifrar.
Además, un servidor pserver mal configurado puede comprometer la
seguridad de toda la máquina.
La ventaja es que los usuarios del servidor pserver no tienen porqué ser
usuarios de la máquina.
Con el método ssh, la comunicación con el servidor se realiza de forma
segura.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Método pserver vs. SSH
8
Pero con el método ssh, los usuarios del CVS tienen que ser usuarios
del sistema (es decir, tener cuenta en /etc/passwd con una shell
válida).
En muchas situaciones no vamos a poder (o no vamos a querer) crear
cuentas de usuario con acceso a una shell para que usen el CVS.
Con el método pserver, el único usuario del sistema es el usuario no
privilegiado cvs.
Su uso actualmente sólo está recomendado para cuentas de usuario
anónimas.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Método pserver vs. SSH
9
Existen otras alternativas para aumentar la seguridad del servidor pser-
ver.
Muchas de ellas se basan en aplicar parches SSL al servidor CVS.
El problema es que a veces también hace falta parchear los clientes.
Una buena aproximación intermedia es la creación de un entorno ch-
root (enjaulado) en el que ejecutar el servidor SSH y el servidor CVS.
De esta manera, podemos tener cuentas ficticias que se comunicarían
con el servidor vía SSH.
intentaran acceder por SSH a una shell, estarían dentro de un
Si
entorno restringido (la jaula) del que no podrían salir.
Los usuarios normales de la máquina podrían acceder normalmente
con otro servidor SSH en otro puerto.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Configuración: método SSH
10
Configuración: método SSH
Variables de entorno en el cliente:
• Variable CVS RSH=/usr/bin/ssh
• Variable CVSROOT=":ext:
[email protected]:/home/cvs"
El servidor sólo necesita tener instalado el paquete CVS (es a la vez
cliente y servidor).
Cada vez que se ejecute un comando CVS, se deberá introducir la
contraseña (son accesos SSH normales y corrientes) a menos que
esté configurado el acceso sin contraseña mediante claves públicas.
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Una sesión de trabajo típica (I)
11
Una sesión de trabajo típica (I)
Nos autenticamos en el servidor (no necesario con método SSH):
$ cvs login
Logging in to :pserver:
[email protected]:2401/home/cvs
CVS password:
Nos bajamos un módulo:
$ cvs co curso-cvs
cvs server: Updating curso-cvs
U curso-cvs/Makefile
U curso-cvs/curso-cvs.tex
U curso-cvs/gul.epsi
U curso-cvs/slnuevo.sty
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Una sesión de trabajo típica (II)
12
Una sesión de trabajo típica (II)
Editamos y realizamos los cambios que sean necesarios.
Subimos los cambios al repositorio:
$ cvs ci -m "Añadida sección 3" curso-cvs.tex
Checking in curso-cvs.tex;
/home/cvs/curso-cvs/curso-cvs.tex,v
new revision: 1.5; previous revision: 1.4
done
<--
curso-cvs.tex
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Una sesión de trabajo típica (y III)
13
Una sesión de trabajo típica (y III)
. . . días después volvemos a trabajar sobre el proyecto. Actualizamos
nuestra copia local con los cambios que hayan podido hacer otros
usuarios:
$ cvs up -d -P
? curso-cvs.dvi
? curso-cvs.ps
cvs server: Updating .
P Makefile
P curso-cvs.tex
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Comandos más importantes (I). Add
14
Comandos más importantes (I). Add
cvs add [-k flag] [-m "comentario"] ficheros...
Añade ficheros y/o directorios a un repositorio
Para añadir un fichero que está en un directorio que no existe en el
repositorio, primero se añade el directorio y luego el fichero
Después de añadirlo hay que hacer un commit del fichero añadido
Ejemplo
• $ cvs add LEEME.txt
cvs add: scheduling file ‘LEEME.txt’ for addition
cvs add: use ’cvs commit’ to add this file permanently
• $ cvs add -kb logo.gif
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Comandos más importantes (II). Checkout
15
Comandos más importantes (II). Checkout
cvs checkout|co|get [opciones] modulos...
Se baja del servidor CVS una copia del módulo o módulos especifica-
dos
Se realiza sólo una vez
• En el resto de ocasiones se harán updates sobre la copia local
Ejemplo
• $ cvs co curso-cvs/curso-cvs.tex
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Comandos más importantes (III). Commit
16
Comandos más importantes (III). Commit
cvs commit|ci [-lnR] [-m ’msj’ | -f fich] [-r revisión] \\
[ficheros...]
Sube al repositorio los cambios realizados en la copia local
Importante: para poder hacer un commit debemos estar trabajando
sobre la última versión de los archivos que hayamos modificado
Ejemplo
• $ cvs ci -m "Añadido método toString()" Bot.java
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Comandos más importantes (IV). Diff
17
Comandos más importantes (IV). Diff
cvs diff [-kl] [opciones] [[-r rev1 | -D fecha1] \\
[-r rev2 | -D fecha2]] [ficheros...]
Compara archivos locales con las versiones del repositorio, o bien dos
revisiones entre sí
Como la utilidad diff de Unix/Linux
Ejemplo
• $ cvs diff -r RELEASE_1_0 -r EXPR1
• Compara las diferencias entre los tags RELEASE 1 0 y EXPR1
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Comandos más importantes (V). Export
18
Comandos más importantes (V). Export
cvs export [-flNnR] [-r rev|-D fecha] [-k flag] \\
[-d dir] modulo...
Extrae los archivos de un módulo para producir una distribución in-
dependente del CVS
Es necesario indicar un tag (-r) o una fecha (-d)
Funciona como checkout, pero no baja los directorios administrativos
CVS
c2002 Álvaro Sánchez-Mariscal
II Curso de introducción a CVS
Comandos más importantes (VI). Import
19
Comandos más importantes (VI). Import
cvs import -m "comentario" nombre-modulo \\
nombre-vendedor nombre-version
Instala un conjunto de archivos en el repositorio
Se mantiene la organización de directorios original
Añade todos los archivos y directorios que se encuentren en el direc-
torio donde se ejecutó el import.
Ejemplo:
$ cvs import -m "Repositorio Prueba" prueba malvarez v0
N prueba/README.txt
cvs import: Importing /home/i5/CVS/is0/prueba/test
N prueba/test/README.txt
No conflicts created by this import
c2002 Álvaro Sánchez-Mariscal
II Curso
Comentarios de: II Curso de introducción a CVS (0)
No hay comentarios