CVS
Concurrent Version System
Juan Quintela
[email protected]
Universidade da Coruna
Mandrakesoft
CVS p. 1/21
¿QuØ es CVS?
CVS es un sistema de control de versiones de cheros.
¿QuØ es CVS?
CVS es un sistema de control de versiones de cheros.
concurrente: permite varios usuarios simultaneos.
CVS p. 2/21
¿QuØ es CVS?
CVS es un sistema de control de versiones de cheros.
concurrente: permite varios usuarios simultaneos.
Se usa cuando es importante ser capaz de acceder a
versiones antiguas de esos cheros.
¿Para quØ sirve CVS?
Para responder a las preguntas:
¿QuiØn hizo un cambio?
CVS p. 3/21
¿Para quØ sirve CVS?
Para responder a las preguntas:
¿QuiØn hizo un cambio?
¿CuÆndo se hizo?
¿Para quØ sirve CVS?
Para responder a las preguntas:
¿QuiØn hizo un cambio?
¿CuÆndo se hizo?
¿PorquØ se hizo?
CVS p. 3/21
¿Para quØ sirve CVS?
Para responder a las preguntas:
¿QuiØn hizo un cambio?
¿CuÆndo se hizo?
¿PorquØ se hizo?
¿QuØ otros cambios se hicieron al mismo tiempo?
Creando un repositorio
Decidir donde lo vamos a colocar:
mkdir /home/master
CVS p. 4/21
Creando un repositorio
Decidir donde lo vamos a colocar:
mkdir /home/master
Inicializarlo:
cvs -d /home/master init
Creando un repositorio
Decidir donde lo vamos a colocar:
mkdir /home/master
Inicializarlo:
cvs -d /home/master init
Decirle a CVS donde esta el repositorio:
export CVSROOT=/home/master
CVS p. 4/21
Incorporando un projecto existente
Poner el projecto bajo control de revisiones:
cvs import hola HOLA HOLA_1
Incorporando un projecto existente
Poner el projecto bajo control de revisiones:
cvs import hola HOLA HOLA_1
Poner el projecto bajo control de revisiones con un
comentario:
cvs import -m "Version inicial"hola HOLA
HOLA_1
CVS p. 5/21
Incorporando un projecto existente
Poner el projecto bajo control de revisiones:
cvs import hola HOLA HOLA_1
Poner el projecto bajo control de revisiones con un
comentario:
cvs import -m "Version inicial"hola HOLA
HOLA_1
Crear una copia de trabajo:
Integrando cambios
Ver que cheros han cambiado con respecto al
repositorio:
cvs release.
CVS p. 6/21
Integrando cambios
Ver que cheros han cambiado con respecto al
repositorio:
cvs release.
Integrar cambios que hemos hecho en el repositorio:
cvs commit -m "poner
n final"ejemplo.c.
Integrando cambios
Ver que cheros han cambiado con respecto al
repositorio:
cvs release.
Integrar cambios que hemos hecho en el repositorio:
cvs commit -m "poner
n final"ejemplo.c.
Integrar cambios del repositorio en nuestra copia:
cvs update.
CVS p. 6/21
Update model
CVS se basa en el update model
Primero actualizar nuestra copia al ultimo valor del
repositorio:
cvs update
Update model
CVS se basa en el update model
Primero actualizar nuestra copia al ultimo valor del
repositorio:
cvs update
Ver que no hay conictos y que todo funciona bien:
cvs release
CVS p. 7/21
Update model
CVS se basa en el update model
Primero actualizar nuestra copia al ultimo valor del
repositorio:
cvs update
Ver que no hay conictos y que todo funciona bien:
cvs release
Actualizar el repositorio:
Ver diferencias
Ver cambios de nuestra copia con el repositorio:
cvs diff.
CVS p. 8/21
Ver diferencias
Ver cambios de nuestra copia con el repositorio:
cvs diff.
Ver cambios de un chero cvs diff
nombre_fichero.
Ver diferencias
Ver cambios de nuestra copia con el repositorio:
cvs diff.
Ver cambios de un chero cvs diff
nombre_fichero.
Ver diferencias con las versiones de ayer:
cvs diff -D’yesterday’.
CVS p. 8/21
Ver diferencias
Ver cambios de nuestra copia con el repositorio:
cvs diff.
Ver cambios de un chero cvs diff
nombre_fichero.
Ver diferencias con las versiones de ayer:
cvs diff -D’yesterday’.
Ver diferencias con las versiones de hace 30 minutos:
Etiquetas
O como marcar que una versin funciona bien de forma
que sea facil recuperarla en el futuro:
cvs tag VERSION_0_1
CVS p. 9/21
Etiquetas (II)
quintela$ cvs diff -rVERSION_0_0_1
Index: ejemplo.c
===================================================================
RCS file: /home/master/ejemplo3/ejemplo.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -p -r1.1.1.1 -r1.2
--- ejemplo.c
+++ ejemplo.c
@@ -4,6 +4,6 @@
7 May 2003 11:26:30 -0000
7 May 2003 12:10:00 -0000
1.1.1.1
1.2
Anotaciones
O la respuesta a la pregunta: ¿ A quiØn le echo la culpa ?
quintela$ cvs annotate ejemplo.c
Annotations for ejemplo.c
***************
1.1
1.1
1.1
1.1
1.1
1.1
1.2
1.1
1.1
(quintela 07-May-03):
(quintela 07-May-03): #include <stdio.h>
(quintela 07-May-03): #include <stdlib.h>
(quintela 07-May-03):
(quintela 07-May-03): int main(void)
(quintela 07-May-03): {
(quintela 07-May-03):
(quintela 07-May-03):
(quintela 07-May-03): }
printf("Hola mundo\n");
exit(0);
CVS p. 11/21
Historia de un chero
quintela$ cvs log ejemplo.c
RCS file: /home/master/ejemplo3/ejemplo.c,v
Working file: ejemplo.c
head: 1.2
branch:
locks: strict
access list:
symbolic names:
VERSION_0_0_1: 1.1.1.1
EJEMPLO_2: 1.1.1.1
Aæadir/Borrar cheros
Crear chero
CVS p. 13/21
Aæadir/Borrar cheros
Crear chero
cvs add new_file
Aæadir/Borrar cheros
Crear chero
cvs add new_file
cvs commit new_file
CVS p. 13/21
Borrar chero
rm -f old_file
Borrar chero
rm -f old_file
cvs del old_file
CVS p. 14/21
Borrar chero
rm -f old_file
cvs del old_file
cvs commit old_file
Renombrar un chero
mv old_name new_name
CVS p. 15/21
Renombrar un chero
mv old_name new_name
cvs add new_name
Renombrar un chero
mv old_name new_name
cvs add new_name
cvs del old_name
CVS p. 15/21
Renombrar un chero
mv old_name new_name
cvs add new_name
cvs del old_name
cvs commit -m "mv old_name
new_name.old_name new_name
Manejando Conictos
$ cvs update
cvs update: Updating .
RCS file: /u/src/master/httpc/httpc.c,v
retrieving revision 1.8
retrieving revision 1.9
Merging differences between 1.8 and 1.9 into httpc.c
rcsmerge: warning: conflicts during merge
cvs update: conflicts found in httpc.c
C httpc.c
CVS p. 16/21
Manejando Conictos (II)
host_info = gethostbyname (hostname);
<<<<<<< httpc.c
if (! host_info) {
fprintf (stderr, "%s: host not found: %s\n", progname, hostname);
exit (1);
}
=======
if (! host_info) {
printf ("httpc: no host");
exit (1);
Ramas
Todo lo que hemos visto hasta aqui se relaciona con
HEAD, la rama principal.
CVS p. 18/21
Ramas
Todo lo que hemos visto hasta aqui se relaciona con
HEAD, la rama principal.
A veces nos interesan poder cambiar cosas en una
version ya creada, por ejemplo un bugx, y que no
quieres que tambien tomen los cambios de la version
actual.
cvsup
Forma de ver cambios relacionados como uno solo
cambio.
CVS p. 19/21
cvsup
Forma de ver cambios relacionados como uno solo
cambio.
Ejemplo: cambiar el numero de argumentos de una
funcion.
cvsup
Forma de ver cambios relacionados como uno solo
cambio.
Ejemplo: cambiar el numero de argumentos de una
funcion.
Al usuario le interesa ver como un todo todos los
cambios a cheros individuales.
CVS p. 19/21
BitKeeper, Subversion, Arch, perforce
Solucionan algunos de los problemas de CVS:
commits atomicos.
BitKeeper, Subversion, Arch, perforce
Solucionan algunos de los problemas de CVS:
commits atomicos.
identicador de chero distinto de path de chero.
CVS p. 20/21
BitKeeper, Subversion, Arch, perforce
Solucionan algunos de los problemas de CVS:
commits atomicos.
identicador de chero distinto de path de chero.
permiten trabajo desconectado.
BitKeeper, Subversion, Arch, perforce
Solucionan algunos de los problemas de CVS:
commits atomicos.
identicador de chero distinto de path de chero.
permiten trabajo desconectado.
Tienen ramas que funcionan.
CVS p. 20/21
BitKeeper, Subversion, Arch, perforce
Solucionan algunos de los problemas de CVS:
commits atomicos.
identicador de chero distinto de path de chero.
permiten trabajo desconectado.
Tienen ramas que funcionan.
...
MÆs informacin
http://www.cvshome.org
CVS p. 21/21
Comentarios de: CVS Concurrent Version System (0)
No hay comentarios