Node:cvs2cl -- Genera ChangeLogs al estilo GNU, Next:cvslock -- Bloquea los repositorios para evitar la atomicidad, Previous:cvsutils -- Utilidades genéricas para usar con CVS, Up:Herramientas de terceros
Depende de: Perl
URL: http://www.red-bean.com/~kfogel/cvs2cl.shtml
cvs2cl.pl condensa y reformatea la salida del registro de cvs para crear un archivo ChangeLog al estilo GNU para su proyecto. Los ChangeLogs son documentos organizados cronológicamente en los que se muestra el historial de cambios de un proyecto con un formato diseñado especialmente para su legibilidad (fíjese en los siguientes ejemplos).
El problema con la orden cvs log
es que presenta su salida
basándose en cada archivo sin tener en cuenta que un mismo mensaje de
cambios, si aparece prácticamente al mismo tiempo en archivos
diferentes, implica que esas revisiones formaron parte de un único
"commit". Por esto, resulta desesperante ir leyendo la salida del
registro para hacerse una idea del estado en el que se encuentra el
desarrollo del proyecto. Realmente sólo puede ver la historia de un
archivo al mismo tiempo.
En el ChangeLog producido por cvs2cl.pl los mensajes de cambios
idénticos se unen de manera que si un único "commit" implica a un grupo
de archivos eso aparece como una única entrada. Por ejemplo:
floss$ cvs2cl.pl -r cvs log: Logging . cvs log: Logging a-subdir cvs log: Logging a-subdir/subsubdir cvs log: Logging b-subdir floss$ cat ChangeLog ... 1999-08-29 05:44 jrandom * README (1.6), hello.c (2.1), a-subdir/whatever.c (2.1), a-subdir/subsubdir/fish.c (2.1): Haciendo commit desde pcl-cvs 2.9, sólo para ir abriendo boca. 1999-08-23 22:48 jrandom * README (1.5): [no log message] 1999-08-22 19:34 jrandom * README (1.4): trivial change ... floss$
La primera entrada muestra que se hizo "commit" de cuatro archivos al mismo tiempo con el mensaje de cambios "Haciendo commit desde pcl-cvs 2.9 sólo para ir abriendo boca". (Se usó la opción -r para mostrar el número de revisión de cada archivo asociado a ese mensaje de cambios.)
Al igual que el propio CVS, cvs2cl.pl toma el directorio actual como una variable implícita pero trabaja sobre archivos individuales si se le proporcionan variables de nombre de archivo. Éstas son algunas de las opciones más usadas:
h
, --help
Muestra su uso (incluyendo una completa lista de opciones).
-r
, --revisions
Muestra los números de revisión en la salida. Si se usa junto con -b las ramas se muestran como NOMBREDELARAMA.N siendo N la revisión de esa rama.
-t
, --tags
Muestra las etiquetas (nombres simbólicos) en las revisiones que las tengan.
-b
, --branches
Muestra el nombre de la rama para las revisiones de esa rama. (Vea también -r.)
-g OPTS
, --global-opts OPTS
Pasa OPTS como una variable global para cvs. Internamente cvs2cl.pl
invoca a cvs para hacerse con los datos de registro en crudo; es
entonces cuando OPTS se pasa al cvs en esa invocación. Por ejemplo,
para obtener un comportamiento tranquilo y compresión, puede hacer esto:
floss$ cvs2cl.pl -g "-Q -z3"
-l OPTS
, --log-opts OPTS
Similar a -g, sólo que OPTS se pasa como opciones de la orden en vez de
como opciones globales. Para generar un ChangeLog en el que aparezcan
únicamente los "commits" que tuvieron lugar entre el 26 de Julio y el 15
de Agosto puede hacer esto:
floss$ cvs2cl.pl -l "'-d1999-07-26<1999-08-15'"
Fíjese en el entrecomillado doble, necesario en Unix porque la shell que
invoca a cvs log (desde dentro de cvs2cl.pl) interpreta el <
como
un símbolo de redirección en shell. Por esto, las comillas tienen que
colocarse como parte de la variable haciéndose necesario envolverlo todo
con unas comillas adicionales.
-d
, --distributed
Coloca un ChangeLog individual en cada subdirectorio cubriendo sólo los "commits" a ese subdirectorio (contrario a crear un ChangeLog que cubra el directorio desde el que se invoca cvs2cl.pl y todos sus subdirectorios).