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:
$Id$
Esta etiqueta nos da una línea completa con
información del fichero fuente, versión y fecha de generación de la
misma.
$Log$
Esta etiqueta nos da una línea completa
con información de los cambios introducidos en cada versión, desde que
se generó la primera (o desde la primera versión en la que aparece esta
línea)
Para introducir el fichero en el sistema RCS, bastará ejecutar:
$ ci main.cLo 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.cLo 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.cEsta 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.cEl 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:
rcsintro(1)
co(1)
ci(1)
ident(1)
rcsclean(1)
rcsdiff(1)
rcsmerge(1)
rlog(1)
rcsfile(5)
grep '\$Id:' a.out
, obtendremos un listado
de todos los módulos donde hemos incluido cadenas de este tipo, y podremos
saber la versión de cada fuente incluido en el ejecutable.
$ cc main.c $ grep '\$Id:' a.out $Id: main.c,v 1.2 1999/07/20 22:05:49 luis Exp $ $ _
http://SLUG.HispaLinux.ES/~luis/