En ClearCase, ¿cómo puedo ver la versión anterior de un archivo en una vista estática, desde la línea de comandos?

StackOverflow https://stackoverflow.com/questions/176858

  •  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 .

¿Fue útil?

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 directorio C: \ 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.

<*>; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;print $b if $a =~/^>/'

(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 directorio C: \ 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.

<*>; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g; print $b if $a =~/^>/'

(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 directorio C: \ 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.

<*>; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;print $b if $a =~/^>/'

(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 directorio C: \ 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top