Node:Usando expansión de palabras, Next:, Previous:Anotaciones y ramificaciones, Up:CVS avanzado



Usando expansión de palabras

Podría recordar una breve mención de keyword expansion en Una introduccion a CVS. Estas palabras especiales de RCS están rodeadas por el signo del dolar, que CVS busca en el texto del fichero y las sustituye por información de revisión. Por ejemplo si un fichero contiene

$Author: carlosgarcia $

entonces cuando se actualize ese fichero a cualquier revisión, CVS lo sustituirá por el nombre de usuario de la persona que realizó la entrega de esa revisión:

$Author: carlosgarcia $

CVS es también consciente de las palabras que han sido sustituidas por lo que estas se pueden actualizar cuando sea apropiado.

Aunque estas palabras no ofrecen información que no puediera ser obtenida mediante otros medios, dan a las personas una forma cómoda de ver los hechos de revisión incluidos en el texto mismo, en vez de tener que invocar alguna orden rara de CVS.

He aquí otros ejemplos de sustitución de palabras:

$Date: 2002/12/03 13:04:59 $       ==>  date of last commit, expands to ==>
$Date: 2002/12/03 13:04:59 $

$Id: chapter-6.texi,v 1.3 2002/12/03 13:04:59 carlosgarcia Exp $         ==>  filename, revision, date, and author; expands to ==>
$Id: chapter-6.texi,v 1.3 2002/12/03 13:04:59 carlosgarcia Exp $

$Revision: 1.3 $   ==>  exactly what you think it is, expands to ==>
$Revision: 1.3 $

$Source: /cvs/lucas/doc-cvsbook-es/chapter-6.texi,v $     ==> path to corresponding repository file, expands to ==>
$Source: /cvs/lucas/doc-cvsbook-es/chapter-6.texi,v $

$Log: chapter-6.texi,v $
Revision 1.3  2002/12/03 13:04:59  carlosgarcia
Traduccion de main, introduction e index

Revision 1.2  2002/11/27 16:26:56  carlosgarcia
Realizados arreglos para compilación

Revision 1.1  2000/09/16 12:07:53  jjamor
Traduccion del capitulo 6 insertada en la B.de trabajo
        ==>  accumulating log messages for the file, expands to ==>
$Log: chapter-6.texi,v $
Revision 1.3  2002/12/03 13:04:59  carlosgarcia
Traduccion de main, introduction e index

Revision 1.2  2002/11/27 16:26:56  carlosgarcia
Realizados arreglos para compilación

Revision 1.1  2000/09/16 12:07:53  jjamor
Traduccion del capitulo 6 insertada en la B.de trabajo

Revision 1.2  1999/07/26 06:47:52  jrandom
...and this is the second log message.

Revision 1.1  1999/07/26 06:39:46  jrandom
This is the first log message...

La palabra $Log: chapter-6.texi,v $ La palabra Revision 1.3 2002/12/03 13:04:59 carlosgarcia La palabra Traduccion de main, introduction e index La palabra La palabra Revision 1.2 2002/11/27 16:26:56 carlosgarcia La palabra Realizados arreglos para compilación La palabra La palabra Revision 1.1 2000/09/16 12:07:53 jjamor La palabra Traduccion del capitulo 6 insertada en la B.de trabajo La palabra es la única que se exande varias lineas. A diferencia de las otras no reemplaza la antigua sustitución con una nueva, sino que inserta la última sustitución más una línea en blanco justo después de la palabra especial (las previas sustituciones quedan más abajo). Además cualquier texto entre el principio de línea y el $Log es usada como un prefijo para las sustituciones (esto se hace para asegurar que los mensajes log quedan comentados en el código del programa). Por ejemplo, si usted pone esto dentro de un fichero

// $Log: chapter-6.texi,v $
// Revision 1.3  2002/12/03 13:04:59  carlosgarcia
// Traduccion de main, introduction e index
//
// Revision 1.2  2002/11/27 16:26:56  carlosgarcia
// Realizados arreglos para compilación
//
// Revision 1.1  2000/09/16 12:07:53  jjamor
// Traduccion del capitulo 6 insertada en la B.de trabajo
//

se sustituirá por esto en la primera entrega:

// $Log: chapter-6.texi,v $
// Revision 1.3  2002/12/03 13:04:59  carlosgarcia
// Traduccion de main, introduction e index
//
// Revision 1.2  2002/11/27 16:26:56  carlosgarcia
// Realizados arreglos para compilación
//
// Revision 1.1  2000/09/16 12:07:53  jjamor
// Traduccion del capitulo 6 insertada en la B.de trabajo
//
// Revision 1.14  1999/07/26 07:03:20  jrandom
// this is the first log message...
//

a esto en la segunda:

// $Log: chapter-6.texi,v $
// Revision 1.3  2002/12/03 13:04:59  carlosgarcia
// Traduccion de main, introduction e index
//
// Revision 1.2  2002/11/27 16:26:56  carlosgarcia
// Realizados arreglos para compilación
//
// Revision 1.1  2000/09/16 12:07:53  jjamor
// Traduccion del capitulo 6 insertada en la B.de trabajo
//
// Revision 1.15  1999/07/26 07:04:40  jrandom
// ...and this is the second log message...
//
// Revision 1.14  1999/07/26 07:03:20  jrandom
// this is the first log message...
//

y así sucesivamente:

// $Log: chapter-6.texi,v $
// Revision 1.3  2002/12/03 13:04:59  carlosgarcia
// Traduccion de main, introduction e index
//
// Revision 1.2  2002/11/27 16:26:56  carlosgarcia
// Realizados arreglos para compilación
//
// Revision 1.1  2000/09/16 12:07:53  jjamor
// Traduccion del capitulo 6 insertada en la B.de trabajo
//
// Revision 1.16  1999/07/26 07:05:34  jrandom
// ...and this is the third!
//
// Revision 1.15  1999/07/26 07:04:40  jrandom
// ...and this is the second log message...
//
// Revision 1.14  1999/07/26 07:03:20  jrandom
// this is the first log message...
//

Podría no querer mantener el historial completo en el fichero todo el tiempo; si es así siempre puede quitar las antiguas secciones cuando sea muy grande. Es más conveniente que tener que ejecutar cvs log, y podría ser útil en proyectos donde la gente debe leer constantemente los mensajes logs.

Una técnica más común puede ser incluir $Revision: 1.3 $ en un fichero y usarlo como número de versión para el programa. Esto puede funcionar si el proyecto consiste de un fichero o se llevan a cabo muchas entregas finales (releases) y al menos se garantize que uno de los ficheros se ha modificado entre cada entrega. Incluso se pueden usar estas palabras de expansión como un valor en el código de un programa:

VERSION = "$Revision: 1.3 $";

CVS sustituye esa palabra como cualquier otra; no tiene en cuenta la semántica del lenguaje de programación ni asume que las dobles comillas protegen la cadena de algún modo.

Una lista completa de palabras de sustitución (hay algunas más poco usuales) se encuentra en Referencia de CVS