Control de revisiones: Ejemplo

Archivado de varias versiones de un mismo fichero fuente

Una sesión típica con RCS se desarrolla del siguiente modo:

Supongamos que tenemos el siguiente código C:

/* $Id$
 * Author: Luis.Colorado@SLUG.HispaLinux.ES
 * Date: Tue Jul 20 23:39:11 MEST 1999
 * $Log$
 */

main()
{
	printf("Hello, world\n");
}

/* $Id$ */

En él, podemos ver una serie de etiquetas especiales, creadas por el programador, que nos permitirán identificar el programa y la versión del mismo. Estas son:

Para introducir el fichero en el sistema RCS, bastará ejecutar:


$ ci main.c

Lo que generará un fichero, llamado main.c. Este fichero guardará todas las versiones de main.c. Ahora podemos borrar tranqulamente el fichero main.c, ya que podremos recuperar la última versión, simplemente tecleando:

$ co main.c

Lo que generará un fichero como el siguiente:

/* $Id: main.c,v 1.1 1999/07/20 21:56:41 luis Exp $
 * Author: Luis.Colorado@SLUG.HispaLinux.ES
 * Date: Tue Jul 20 23:39:11 MEST 1999
 * $Log: main.c,v $
 * Revision 1.1  1999/07/20 21:56:41  luis
 * Initial revision
 *
 */

main()
{
	printf("Hello, world\n");
}

/* $Id: main.c,v 1.1 1999/07/20 21:56:41 luis Exp $ */

En él vemos que las etiquetas que pusimos se han sustituido por valores adecuados a las versiones creadas (la primera versión que tenemos)

Pero es mas, podríamos definir en el código fuente C, una variable static char * que nos permita identificar el código empleado por el programa del siguiente modo: Primero, generamos una segunda versión del programa, obteniendo una copia para edición:


$ co -l main.c

Esta copia, a diferencia de la anterior, se puede editar (en la anterior no teníamos permiso de escritura) y podemos hacer algunos cambios. El fuente quedará como sigue:

/* $Id: main.c,v 1.1 1999/07/20 21:56:41 luis Exp luis $
 * Author: Luis.Colorado@SLUG.HispaLinux.ES
 * Date: Tue Jul 20 23:39:11 MEST 1999
 * $Log: main.c,v $
 * Revision 1.1  1999/07/20 21:56:41  luis
 * Initial revision
 *
 */

static char *RCSId = "\n$Id$\n";

main()
{
	printf("Hello, world\n");
}

/* $Id: main.c,v 1.1 1999/07/20 21:56:41 luis Exp luis $ */

Tras la ejecución del siguiente código:


$ ci main.c
main.c,v  <--  main.c
new revision: 1.2; previous revision: 1.1
enter log message, terminated with single '.' or end of file:
>> Introducción de la cadena de Identificación de fuente en el código objeto.
>> .
done
$ co main.c

El programa quedará: 1

/* $Id: main.c,v 1.2 1999/07/20 22:05:49 luis Exp $
 * Author: Luis.Colorado@SLUG.HispaLinux.ES
 * Date: Tue Jul 20 23:39:11 MEST 1999
 * $Log: main.c,v $
 * Revision 1.2  1999/07/20 22:05:49  luis
 * Introducción de la cadena de Identificación de fuente en el código objeto.
 *
 * Revision 1.1  1999/07/20 21:56:41  luis
 * Initial revision
 *
 */

static char *RCSId = "\n$Id: main.c,v 1.2 1999/07/20 22:05:49 luis Exp $\n";

main()
{
	printf("Hello, world\n");
}

/* $Id: main.c,v 1.2 1999/07/20 22:05:49 luis Exp $ */

Para terminar, diremos que la información aquí mostrada constituye solamente una introducción, remitiendo a los lectores a visitar las páginas del manual correspondientes a RCS:


Notas:


Luis.Colorado@Hispalinux.ES
Puentelarrá 31
28031 MADRID
http://SLUG.HispaLinux.ES/~luis/