En ClearCase, ¿cómo puedo ver la versión anterior de un archivo en una vista estática, desde la línea de comandos?
-
05-07-2019 - |
Pregunta
En una vista estática, ¿cómo puedo ver una versión anterior de un archivo?
Dado un archivo vacío (llamado vacío
en este ejemplo) puedo subvertir diff
para mostrarme la versión anterior:
% cleartool diff -ser empty File@@/main/28
Esto se siente como un truco bastante feo. ¿Me he perdido un comando más básico? ¿Hay una forma más ordenada de hacer esto?
(No quiero editar la especificación de configuración, eso es bastante tedioso, y estoy tratando de ver un montón de versiones antiguas).
Aclaración : quiero enviar la versión del archivo a la salida estándar, para poder usarla con el resto de Unix (grep, sed, etc.) Si encontró esta pregunta porque está buscando una manera de guardar una versión de un elemento en un archivo, consulte la respuesta de Brian .
Solución
Estoy tratando de ver un montón de versiones antiguas
No estoy seguro de si está hablando de " un montón de versiones antiguas " de un archivo , " un montón de versiones antiguas " de varios archivos.
Para visualizar varias versiones antiguas de un archivo, el medio más simple es mostrar su árbol de versión ( ct lsvtree -graph File
), y luego seleccionar una versión, hacer clic derecho sobre él y '< código> Enviar a 'un editor que acepta múltiples archivos (como Notepad ++). En unos pocos clics tendrá una vista de esas versiones antiguas.
Nota: debe tener CC6.0 o 7.0.1 IFIX01 (7.0.0 y 7.0.1 no se puede 'enviar a' un archivo con el siguiente mensaje de error " Se denegó el acceso al archivo sin nombre
" ;)
Pero para visualizar varias versiones antiguas de diferentes archivos, recomendaría una vista dinámica y editar la especificación de configuración de esa vista (y no la vista de instantánea con la que está trabajando actualmente), para seleccionar rápidamente todos esos archivos antiguos ( esperemos que a través de una simple regla de selección como ' element * aLabel
')
[De los comentarios:]
¿cuál es la forma idiomática de " cat " una revisión anterior de un archivo?
La forma idiomática es a través de una vista dinámica (que configura con la misma especificación de configuración que su vista de instantánea existente).
Luego puede navegar (como en 'cambiar directorio a') las varias rutas extendidas de un archivo.
Si desea activar todas las versiones de una rama de un archivo, vaya a:
cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch
cat 1
cat 2
...
cat x
' 1
', ' 2
', ... ' x
' es la versión 1, 2, ... x de su archivo dentro de esa rama.
Para una vista de instantánea , no se puede acceder a la ruta extendida , por lo que su " hack " es el camino a seguir.
Sin embargo, 2 comentarios aquí:
- para mostrar rápidamente todas las revisiones anteriores de un archivo de instantáneas en una rama determinada, puede escribir:
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
(versión multilínea para facilitar la lectura :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
- rápidamente puedes tener una salida un poco mejor con
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=Estoy tratando de ver un montón de versiones antiguas
No estoy seguro de si está hablando de " un montón de versiones antiguas " de un archivo , " un montón de versiones antiguas " de varios archivos.
Para visualizar varias versiones antiguas de un archivo, el medio más simple es mostrar su árbol de versión (
ct lsvtree -graph File
), y luego seleccionar una versión, hacer clic derecho sobre él y '< código> Enviar a 'un editor que acepta múltiples archivos (como Notepad ++). En unos pocos clics tendrá una vista de esas versiones antiguas.
Nota: debe tener CC6.0 o 7.0.1 IFIX01 (7.0.0 y 7.0.1 no se puede 'enviar a' un archivo con el siguiente mensaje de error "Se denegó el acceso al archivo sin nombre
" ;)Pero para visualizar varias versiones antiguas de diferentes archivos, recomendaría una vista dinámica y editar la especificación de configuración de esa vista (y no la vista de instantánea con la que está trabajando actualmente), para seleccionar rápidamente todos esos archivos antiguos ( esperemos que a través de una simple regla de selección como '
element * aLabel
')
[De los comentarios:]
¿cuál es la forma idiomática de " cat " una revisión anterior de un archivo?
La forma idiomática es a través de una vista dinámica (que configura con la misma especificación de configuración que su vista de instantánea existente).
Luego puede navegar (como en 'cambiar directorio a') las varias rutas extendidas de un archivo.
Si desea activar todas las versiones de una rama de un archivo, vaya a:
cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch cat 1 cat 2 ... cat x
'
1
', '2
', ... 'x
' es la versión 1, 2, ... x de su archivo dentro de esa rama.
Para una vista de instantánea , no se puede acceder a la ruta extendida , por lo que su " hack " es el camino a seguir.
Sin embargo, 2 comentarios aquí:
- para mostrar rápidamente todas las revisiones anteriores de un archivo de instantáneas en una rama determinada, puede escribir:
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
(versión multilínea para facilitar la lectura :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
- rápidamente puedes tener una salida un poco mejor con
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=Estoy tratando de ver un montón de versiones antiguas
No estoy seguro de si está hablando de " un montón de versiones antiguas " de un archivo , " un montón de versiones antiguas " de varios archivos.
Para visualizar varias versiones antiguas de un archivo, el medio más simple es mostrar su árbol de versión (
ct lsvtree -graph File
), y luego seleccionar una versión, hacer clic derecho sobre él y '< código> Enviar a 'un editor que acepta múltiples archivos (como Notepad ++). En unos pocos clics tendrá una vista de esas versiones antiguas.
Nota: debe tener CC6.0 o 7.0.1 IFIX01 (7.0.0 y 7.0.1 no se puede 'enviar a' un archivo con el siguiente mensaje de error "Se denegó el acceso al archivo sin nombre
" ;)Pero para visualizar varias versiones antiguas de diferentes archivos, recomendaría una vista dinámica y editar la especificación de configuración de esa vista (y no la vista de instantánea con la que está trabajando actualmente), para seleccionar rápidamente todos esos archivos antiguos ( esperemos que a través de una simple regla de selección como '
element * aLabel
')
[De los comentarios:]
¿cuál es la forma idiomática de " cat " una revisión anterior de un archivo?
La forma idiomática es a través de una vista dinámica (que configura con la misma especificación de configuración que su vista de instantánea existente).
Luego puede navegar (como en 'cambiar directorio a') las varias rutas extendidas de un archivo.
Si desea activar todas las versiones de una rama de un archivo, vaya a:
cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch cat 1 cat 2 ... cat x
'
1
', '2
', ... 'x
' es la versión 1, 2, ... x de su archivo dentro de esa rama.
Para una vista de instantánea , no se puede acceder a la ruta extendida , por lo que su " hack " es el camino a seguir.
Sin embargo, 2 comentarios aquí:
- para mostrar rápidamente todas las revisiones anteriores de un archivo de instantáneas en una rama determinada, puede escribir:
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
(versión multilínea para facilitar la lectura :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
- rápidamente puedes tener una salida un poco mejor con
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=Estoy tratando de ver un montón de versiones antiguas
No estoy seguro de si está hablando de " un montón de versiones antiguas " de un archivo , " un montón de versiones antiguas " de varios archivos.
Para visualizar varias versiones antiguas de un archivo, el medio más simple es mostrar su árbol de versión (
ct lsvtree -graph File
), y luego seleccionar una versión, hacer clic derecho sobre él y '< código> Enviar a 'un editor que acepta múltiples archivos (como Notepad ++). En unos pocos clics tendrá una vista de esas versiones antiguas.
Nota: debe tener CC6.0 o 7.0.1 IFIX01 (7.0.0 y 7.0.1 no se puede 'enviar a' un archivo con el siguiente mensaje de error "Se denegó el acceso al archivo sin nombre
" ;)Pero para visualizar varias versiones antiguas de diferentes archivos, recomendaría una vista dinámica y editar la especificación de configuración de esa vista (y no la vista de instantánea con la que está trabajando actualmente), para seleccionar rápidamente todos esos archivos antiguos ( esperemos que a través de una simple regla de selección como '
element * aLabel
')
[De los comentarios:]
¿cuál es la forma idiomática de " cat " una revisión anterior de un archivo?
La forma idiomática es a través de una vista dinámica (que configura con la misma especificación de configuración que su vista de instantánea existente).
Luego puede navegar (como en 'cambiar directorio a') las varias rutas extendidas de un archivo.
Si desea activar todas las versiones de una rama de un archivo, vaya a:
cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch cat 1 cat 2 ... cat x
'
1
', '2
', ... 'x
' es la versión 1, 2, ... x de su archivo dentro de esa rama.
Para una vista de instantánea , no se puede acceder a la ruta extendida , por lo que su " hack " es el camino a seguir.
Sin embargo, 2 comentarios aquí:
- para mostrar rápidamente todas las revisiones anteriores de un archivo de instantáneas en una rama determinada, puede escribir:
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
(versión multilínea para facilitar la lectura :)
cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
- rápidamente puedes tener una salida un poco mejor con
(versión de una línea para copiar y pegar, sintaxis de Unix :)
cmd-context get –to foo.c.temp /dev/hello_world/foo.c@@/main/2
(versión multilínea para facilitar la lectura :)
cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main\2
De esa manera, la salida es mejor.
El " cleartool get
" comando (página de manual) mencionado a continuación por Brian don No hagas stdout:
El comando obtener copia solo los elementos del archivo en una vista.
En un sistema UNIX o Linux, copie
/dev/hello_world/foo.c@@/main/2
en el directorio actual.
cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main\2 | type C:\build\foo.c.temp
<*>En un sistema Windows, copie
\ dev \ hello_world \ foo.c @@ \ main \ 2
en el directorioC: \ build
.
Entonces, tal vez, canalizando el resultado a un cat
(o type
en Windows), puede hacer algo con la salida de dicho cat
( type
) comando.
(versión multilínea para facilitar la lectura :)
<*>De esa manera, la salida es mejor.
El " cleartool get
" comando (página de manual) mencionado a continuación por Brian don No hagas stdout:
<*>El comando obtener copia solo los elementos del archivo en una vista.
En un sistema UNIX o Linux, copie
/dev/hello_world/foo.c@@/main/2
en el directorio actual.
<*>En un sistema Windows, copie
\ dev \ hello_world \ foo.c @@ \ main \ 2
en el directorioC: \ build
.
Entonces, tal vez, canalizando el resultado a un cat
(o type
en Windows), puede hacer algo con la salida de dicho cat
( type
) comando.
(versión multilínea para facilitar la lectura :)
<*>De esa manera, la salida es mejor.
El " cleartool get
" comando (página de manual) mencionado a continuación por Brian don No hagas stdout:
<*>El comando obtener copia solo los elementos del archivo en una vista.
En un sistema UNIX o Linux, copie
/dev/hello_world/foo.c@@/main/2
en el directorio actual.
<*>En un sistema Windows, copie
\ dev \ hello_world \ foo.c @@ \ main \ 2
en el directorioC: \ build
.
Entonces, tal vez, canalizando el resultado a un cat
(o type
en Windows), puede hacer algo con la salida de dicho cat
( type
) comando.
(versión multilínea para facilitar la lectura :)
<*>De esa manera, la salida es mejor.
El " cleartool get
" comando (página de manual) mencionado a continuación por Brian don No hagas stdout:
<*>El comando obtener copia solo los elementos del archivo en una vista.
En un sistema UNIX o Linux, copie
/dev/hello_world/foo.c@@/main/2
en el directorio actual.
<*>En un sistema Windows, copie
\ dev \ hello_world \ foo.c @@ \ main \ 2
en el directorioC: \ build
.
Entonces, tal vez, canalizando el resultado a un cat
(o type
en Windows), puede hacer algo con la salida de dicho cat
( type
) comando.
Otros consejos
Sé que este es un tema antiguo ... pero no podía dejar que esto se resolviera ...
Las vistas estáticas tienen un " ct get " comando que hace exactamente lo que estás buscando.
cleartool get -to ~/foo File@@/main/28
guardará esta versión del archivo en ~ / foo
.
[Reescrito basado en el primer comentario]
Todos los archivos en Clearcase, incluidas las versiones, están disponibles en la estructura de directorio virtual. No tengo mucha familiaridad con las vistas estáticas, pero creo que todavía pasan por una fs virtual; simplemente se actualizan de manera diferente.
En ese caso, simplemente puede hacer:
cat File@@/main/28
Puede ser feo si también tiene que encontrar la versión correcta de un directorio que contenga ese elemento de archivo. Tenemos un script PERL en funcionamiento que utiliza este enfoque para analizar los cambios históricos realizados en los archivos, ¡y rápidamente nos quedamos sin espacio en la línea de comandos en Windows para ejecutar los comandos!
Si el archivo es un elemento Clearcase y cat File
funciona, y la vista está configurada correctamente, intente:
cat File@@/main/28
(nota: sin el ct shell
- no deberías necesitar esto si ya estás en la vista).
Intenta escribir:
ct ls -l File
Si muestra el archivo con un nombre extendido similar al anterior, deberías poder catar el archivo usando un nombre extendido.
ct shell cat File @@ version