Antes de continuar, usted debería saber un poco acerca de como identificar una revisión particular en su repositorio. Como aprendió en “Revisiones”, una revisión es una “instantánea” de su repositorio en un momento particular en el tiempo. A medida que continúe depositando y haciendo crecer su repositorio, usted necesita un mecanismo para identificar estas instantáneas.
Usted puede especificar estas revisiones usando
--revision
(-r
) junto con la
revisión que desee (svn --revision REV) o puede
especificar un rango separando dos revisiones con dos puntos
(svn --revision REV1:REV2). Y Subversion le permite
referirse a estas revisiones por número, palabra clave, o fecha.
Cuando usted crea un nuevo repositorio de Subversion, este comienza su vida en la revisión cero y cada envío sucesivo incrementa el número de revisión en uno. Después de completar su envío, el cliente de Subversion le informa del nuevo número de revisión:
$ svn commit --message "Corrected number of cheese slices." Sending sandwich.txt Transmitting file data . Committed revision 3.
Si en cualquier punto del futuro usted quiere referirse a esa revisión (veremos cómo y por qué podríamos querer hacer esto más adelante en este capítulo), puede referirse a ella como “3”.
El cliente de Subversion entiende una cantidad de
palabras clave de la revisión. Estas palabras
clave pueden ser usadas en vez del número entero como argumento
a la opción --revision
, y son resueltos como
números específicos de revisión por Subversion:
Nota | |
---|---|
Cada directorio en su copia de trabajo contiene un subdirectorio
administrativo llamado |
La última revisión en el repositorio.
La revisión “prístina” de un elemento en la copia de trabajo.
La última revisión en la que un elemento cambió antes
(o en) BASE
.
La revisión inmediatamente anterior a la
última revisión en la cual un elemento cambió.
(Técnicamente, COMMITTED
- 1.)
Nota | |
---|---|
|
Aquí hay algunos ejemplos de palabras clave de revisión en acción. No se preocupe si los comandos no tienen sentido todavía; estaremos explicando estos comandos a medida que avancemos por el capítulo:
$ svn diff --revision PREV:COMMITTED foo.c
# shows the last change committed to foo.c
$ svn log --revision HEAD
# shows log message for the latest repository commit
$ svn diff --revision HEAD
# compares your working file (with local mods) to the latest version
# in the repository.
$ svn diff --revision BASE:HEAD foo.c
# compares your “pristine” foo.c (no local mods) with the
# latest version in the repository
$ svn log --revision BASE:HEAD
# shows all commit logs since you last updated
$ svn update --revision PREV foo.c
# rewinds the last change on foo.c.
# (foo.c's working revision is decreased.)
Estas palabras clave le permiten realizar muchas operaciones comunes (y útiles) sin tener que buscar números específicos de revisión o recordar la revisión exacta de su copia de trabajo.
Dondequiera que usted especifique un número de revisión o palabra clave de revisión, usted también puede especificar una fecha dentro de llaves “{}”. ¡Puede incluso tener acceso a un rango de cambios en el repositorio usando fechas y revisiones juntas!
Aquí hay ejemplos de los formatos de fecha que admite Subversion. Recuerde usar comillas alrededor de cualquier fecha que contenga espacios.
$ svn checkout --revision {2002-02-17} $ svn checkout --revision {15:30} $ svn checkout --revision {15:30:00.200000} $ svn checkout --revision {"2002-02-17 15:30"} $ svn checkout --revision {"2002-02-17 15:30 +0230"} $ svn checkout --revision {2002-02-17T15:30} $ svn checkout --revision {2002-02-17T15:30Z} $ svn checkout --revision {2002-02-17T15:30-04:00} $ svn checkout --revision {20020217T1530} $ svn checkout --revision {20020217T1530Z} $ svn checkout --revision {20020217T1530-0500} …
Cuando usted especifica una fecha como revisión, Subversion encuentra la revisión más reciente en el repositorio a esa fecha:
$ svn log --revision {2002-11-28} ------------------------------------------------------------------------ r12 | ira | 2002-11-27 12:31:51 -0600 (Wed, 27 Nov 2002) | 6 lines …
También puede especificar un rango de fechas. Subversion encontrará todas las revisiones entre ambas fechas, inclusive:
$ svn log --revision {2002-11-20}:{2002-11-29} …
Como señalamos, también puede mezclar fechas y revisiones:
$ svn log --revision {2002-11-20}:4040
Los usuarios deberían estar enterados de una sutileza que puede convertirse en un obstáculo al tratar con fechas en Subversion. Como la marca de tiempo de una revisión es guardada como una propiedad de la revisión— una propiedad sin versionar, modificable — las marcas de tiempo de las revisiones pueden cambiarse para representar una falsificación completa de la verdadera cronología, o incluso borrarla totalmente. Esto causará estragos en la conversión interna fecha-a-revisión que realiza Subversion.