Node:Usando expansión de palabras, Next:Salir del limbo (Cómo trabajar con derivaciones y sobrevivir), Previous:Anotaciones y ramificaciones, Up:CVS avanzado
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