Publicado el 17 de Septiembre del 2020
518 visualizaciones desde el 17 de Septiembre del 2020
61,6 KB
20 paginas
cvs
Concurrent Version System
1
>Que 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.
2
>Para que sirve cvs?
Para responder a las preguntas:
>Quien hizo un cambio?
>Cuando se hizo?
>Porque se hizo?
>Que otros cambios se hicieron al mismo tiempo?
3
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
4
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:
cvs checkout hola
5
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.
6
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:
cvs commit
7
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:
cvs diff -D’30 minutes ago’.
8
Etiquetas
O como marcar que una version funciona bien de forma que sea
facil recuperarla en el futuro:
cvs tag VERSION 0 1
9
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
7 May 2003 11:26:30 -0000
1.1.1.1
+++ ejemplo.c
7 May 2003 12:10:00 -0000
1.2
@@ -4,6 +4,6 @@
int main(void)
{
-
+
}
printf("Hola mundo");
printf("Hola mundo\n");
exit(0);
10
Anotaciones
O la respuesta a la pregunta: > A quien 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):
printf("Hola mundo\n");
(quintela 07-May-03):
exit(0);
(quintela 07-May-03): }
11
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
EJEMPLO: 1.1.1
keyword substitution: kv
total revisions: 3;
selected revisions: 3
description:
----------------------------
revision 1.2
date: 2003/05/07 12:10:00; author: quintela; state: Exp; lines: +1 -1
Add endline
----------------------------
revision 1.1
date: 2003/05/07 11:26:30; author: quintela; state: Exp;
branches: 1.1.1;
Initial revision
----------------------------
revision 1.1.1.1
date: 2003/05/07 11:26:30; author: quintela; state: Exp; lines: +0 -0
Hola
=============================================================================
12
Añadir/Borrar cheros
Crear chero
cvs add new file
cvs commit new file
rm -f old file
cvs del old file
cvs commit old file
13
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
14
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
15
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);
}
>>>>>>> 1.9
16
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.
17
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.
18
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.
...
19
Mas informacion
http://www.cvshome.org
20
Comentarios de: cvs - Concurrent Version System (0)
No hay comentarios