clearcase - tipos - diagramas dinamicos de uml
En ClearCase, ¿cómo puedo ver la versión anterior de un archivo en una vista estática, desde la línea de comandos? (5)
Sé que este es un hilo viejo ... pero no podía dejar que esta paliza pasara sin resolver ...
Las vistas estáticas tienen un comando "ct get" que hace exactamente lo que estás buscando.
cleartool get -to ~/foo File@@/main/28
guardará esta versión del archivo en ~/foo
.
En una vista estática, ¿cómo puedo ver una versión anterior de un archivo?
Dado un archivo vacío (llamado empty
en este ejemplo) puedo subvertir diff
para mostrarme la versión anterior:
% cleartool diff -ser empty File@@/main/28
Esto se siente como un hack bastante feo. ¿Me he perdido un comando más básico? ¿Hay una manera más ordenada de hacer esto?
(No quiero editar las especificaciones de configuración, eso es bastante tedioso, y estoy tratando de ver un montón de versiones antiguas).
Aclaración : deseo enviar la versión del archivo a stdout, para que pueda usarlo con el resto de Unix (grep, sed, etc.). Si encontró esta pregunta, está buscando una forma de guardar un archivo. versión de un elemento a un archivo, vea la respuesta de Brian .
[Reescrito en base al primer comentario]
Todos los archivos en Clearcase, incluidas las versiones, están disponibles en la estructura del directorio virtual. No tengo mucha familiaridad con las vistas estáticas, pero creo que todavía atraviesan un fs virtual; simplemente se actualizan de manera diferente.
En ese caso, puedes hacer lo siguiente:
cat File@@/main/28
Puede ponerse 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 de línea de comandos en Windows para ejecutar realmente los comandos.
ct shell cat File @@ version
Si File es un elemento Clearcase, y el cat File
funciona, y la vista está configurada correctamente, intente:
cat File@@/main/28
(Nota: sin el ct shell
, no debería necesitar esto si ya está en la vista).
Prueba a escribir:
ct ls -l File
Si muestra el archivo con un nombre extendido similar al anterior, entonces deberías poder cat el archivo usando un nombre extendido.
Estoy tratando de ver un montón de versiones antiguas
No estoy seguro 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, la forma más simple es mostrar su árbol de versiones ( ct lsvtree -graph File
), y luego seleccionar una versión, hacer clic derecho sobre ella y '' Send To
'' 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 pueden ''enviarse a'' un archivo con el siguiente mensaje de error " Access to unnamed file was denied
")
Pero para visualizar varias versiones antiguas de diferentes archivos, recomendaría una vista dinámica y la edición de 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 (con suerte a través de un regla simple 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 el directorio a'') las diversas rutas extendidas de un archivo.
Si quieres cazar todas las versiones de una rama de un archivo, ingresas:
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 , la ruta extendida no es accesible , por lo que su "truco" es el camino a seguir.
Sin embargo, 2 comentarios aquí:
- para mostrar rápidamente todas las revisiones previas de un archivo de instantánea en una rama determinada, puede escribir:
(Versión de una línea para copiar y pegar, sintaxis Unix :)
cleartool find addon.xml -ver ''brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)'' -exec ''cleartool diff -ser empty "$CLEARCASE_XPN"''
(versión de varias líneas para legibilidad :)
cleartool find addon.xml -ver ''brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)'' -exec ''cleartool diff -ser empty "$CLEARCASE_XPN"''
- puede obtener rápidamente una salida más agradable con
(Versión de una línea para copiar y pegar, sintaxis Unix :)
cleartool find addon.xml -ver ''brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)'' -exec ''cleartool diff -ser empty "$CLEARCASE_XPN"'' | ccperl -nle ''$a=$_; $b = $a; $b =~ s/^>+/s(?:file/s+/d+:/s+)?//g;print $b if $a =~/^>/''
(versión de varias líneas para legibilidad :)
cleartool find addon.xml -ver ''brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)'' -exec ''cleartool diff -ser empty "$CLEARCASE_XPN"'' | ccperl -nle ''$a=$_; $b = $a; $b =~ s/^>+/s(?:file/s+/d+:/s+)?//g; print $b if $a =~/^>/''
De esa forma, la salida es más agradable.
El cleartool get
" cleartool get
" (página man) mencionado a continuación por Brian no hace stdout:
El comando get copia solo elementos de 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 foo.c.temp /dev/hello_world/foo.c@@/main/2
En un sistema Windows, copie
/dev/hello_world/foo.c@@/main/2
en el directorioC:/build
.
cmd-context get –to C:/build/foo.c.temp /dev/hello_world/foo.c@@/main/2
Entonces, quizás, al canalizar el resultado a un cat
(o type
ventanas), entonces puede hacer algo con la salida de dicho comando cat
( type
).
cmd-context get –to C:/build/foo.c.temp /dev/hello_world/foo.c@@/main/2 | type C:/build/foo.c.temp