tag manager instalar google diff clearcase cleartool

diff - instalar - https tag manager



¿Alguna forma de usar una herramienta de diferencia personalizada con cleartool/clearcase? (11)

Me gustaría usar mi propio diff cuando trabaje en una vista de instantánea de clearcase.

Por lo que puedo ver, no hay forma de especificar una herramienta diff al ejecutar " cleartool diff ", así que estaba pensando que podría ejecutar algo como " mydiff <predecessor file> <modified file in my view> ", pero no No sé lo suficiente sobre ClearCase para poder encontrar el "archivo predecesor" para diferir.

Alguna forma de hacer esto?

Olvidé mencionar (hasta ahora, después de leer las dos primeras respuestas relacionadas con Windows) que esto está en Unix, y no tengo permitido usar la configuración de ClearCase.


Instalé "WinMerge" (una herramienta libre de diferencias) y se instaló como la herramienta clearcase diff. No estoy seguro de cómo hizo eso.


Otra opción es usar Git + ClearCase (o ver esto o esto ) y simplemente diferir con Git.

Esto es notablemente fácil de configurar y, en mi experiencia, en realidad le duele menos a su cerebro usar dos sistemas VCS a la vez que tratar de vencer a CC como una herramienta del siglo XXI.

Solo piensa en Git como un puente entre CC y diff :-)


Tengo otra forma de trabajar basada en las sugerencias aquí. Descubrí el comando "get" de cleartool, así que lo ejecuto para obtener la versión anterior en un archivo temporal:

cleartool get -to fname.temp fname @@ predecesor

Luego ejecute mi diff y elimine ese archivo.

Gracias por todas las sugerencias.


WinMerge como se menciona automáticamente detecta una instalación de ClearCase y modifica el archivo de mapa en la ruta de instalación de Clearcase.

He tenido problemas cuando ClearCase abrirá su propia herramienta de diferencias porque la instalación de WinMerge no modificó todas las líneas de pedido necesarias. Por lo tanto, es una buena idea leer la documentación de ClearCase para que pueda corregirla manualmente si es necesario.



Para mí, esto funciona muy bien:

%vimdiff my_file.c my_file.c@@/main/LATEST


Cómo cambiar las herramientas de diferencia predeterminadas

Puede especificar una herramienta de diferencias externa modificando el mapa de archivos , en "c: / archivos de programa / rational / ClearCase / lib / mgrs"

El WinMerge sugerido por Paul realmente modifica ese archivo.

Cada línea de mapa tiene 3 partes: el tipo de archivo CC, la acción CC y la aplicación.

Busque la sección en el archivo de mapa para los tipos de archivo text_file_delta. Allí encontrará líneas para comparar acciones CC, xcompare, fusionar y xmerge que se ven así:

text_file_delta compare ../../bin/cleardiff.exe text_file_delta xcompare ../../bin/cleardiffmrg.exe text_file_delta merge ../../bin/cleardiff.exe text_file_delta xmerge ../../bin/cleardiffmrg.exe

Puede reemplazarlos por el ejecutable de su opción de herramienta diff .

O bien, un script diff simple

Si desea ir a la línea de comando completa en esto (que me gusta ;-)), un poco de ccperl puede ayudar:

#!/bin/perl my ($file, $switches) = @ARGV; $switches ||= ''-ubBw''; my ($element, $version, $pred) = split(/;/,`cleartool describe -fmt ''%En;%Vn;%PVn'' $file`); unless ($pred) { die "ctdiff: $file has no predecessor/n"; } exec "mydiff $switches $element/@/@$pred $file";

Advertencia: la ruta de acceso extendida ( @@/... ) solo es accesible en la vista dinámica ( M:/... , no en la vista de instantáneas ( c:/... ).

La secuencia de comandos no tiene nada que ver con el archivo de map presentado anteriormente:

  • ese archivo define ''Type Merge Managers''.
  • Esta secuencia de comandos le permite ejecutar cualquier administrador de combinación en cualquier archivo que desee, sin leer ningún archivo de mapa para buscar el archivo diff adecuado para usar para un archivo determinado.

Aquí, le proporciona al script ambas informaciones: el archivo (como parámetro) y el exe de diff para ejecutar (dentro de la implementación del script: reemplace mydiff por el exe de cualquier diff que desee).

O mejor script de diff (también funciona en vistas estáticas / de instantáneas)

Aquí hay una versión de este script que funciona tanto para instantáneas como para vistas dinámicas.

Para la vista de instantánea, uso la sugerencia de cleartool get : cleartool get .

De nuevo, puede reemplazar el comando diff incluido en este script por la herramienta que elija.

#!/bin/perl my ($file, $switches) = @ARGV; $switches ||= ''-u''; my ($element, $version, $pred) = split(/;/,`cleartool describe -fmt ''%En;%Vn;%PVn'' $file`); unless ($pred) { die "ctdiff: $file has no predecessor/n"; } # figure out if view is dynamic or snapshot my $str1 = `cleartool lsview -long -cview`; if($? == 0) { dodie("pred.pl must be executed within a clearcase view"); } my @ary1 = grep(/Global path:/, split(//n/, $str1)); if($str1 =~ /View attributes: snapshot/sm) { $is_snapshot = 1; } my $predfile = "$element/@/@$pred"; $predfile =~ s//'//g;#'' #printf("$predfile/n"); if ($is_snapshot) { my $predtemp = "c://temp//pred.txt"; unlink($predtemp); my $cmd = "cleartool get -to $predtemp $predfile"; printf("$cmd/n"); my $str2 = `$cmd`; $predfile = $predtemp; } sub dodie { my $message = $_[0]; print($message . "/n"); exit 1; } exec "diff $switches $predfile $file";


¡Parece que alguien ya lo pensó en snip2code!
Aquí un script tcsh bash que hace exactamente lo que quieres.

Custom-diff-tool-for-clearcase-object

Como puede ver, el siguiente es el código clave para obtener la versión anterior de un archivo dado:

cleartool descr -pred -short $1

Donde $1 es el nombre del archivo para comparar.

#!/bin/tcsh -e set _CLEARCASE_VIEW = `cleartool pwv -short -setview` echo Set view: "$_CLEARCASE_VIEW" set my_firstversion = "" set my_secondversion = "" set my_difftool = kdiff3 # check clearcase view if ( "$_CLEARCASE_VIEW" == "** NONE **" ) then echo "Error: ClearCase view not set, aborted." exit -1 endif if ( "$1" == "" ) then echo "Error: missing 1st file argument!" echo "Eg: `basename $0` file1.txt -> This will diff file1.txt with its previous version" echo "Eg: `basename $0` file1.txt file2.txt -> This will diff file1.txt and file2.txt" exit -1 endif set my_firstversion = "$1" echo "my_firstversion=$my_firstversion" if ( "$2" == "" ) then echo "No 2nd file passed, calculating previous version of $my_firstversion" set my_secondversion = $my_firstversion@@`cleartool descr -pred -short $my_firstversion` else echo "Setting 2nd file to $2" set my_secondversion = "$2" endif echo "my_secondversion=$my_secondversion" ${my_difftool} ${my_firstversion} ${my_secondversion} &


Kdiff3 ha incorporado integración. Abra la herramienta - vaya a Configuración -> Configurar -> Integración y haga clic en el botón "Integrar con ClearCase". Esta herramienta tiene un excelente soporte de diff de 3 vías, maneja UTF-8 y con esta integración automatizada no tiene que preocuparse por los tipos de elementos, etc. en el archivo del mapa.


Por lo general, procedo de esta manera.

Para un diff de cleartool diff -pred <my file> unificado diff cleartool diff -pred <my file>

Para un gráfico diff cleartool diff -pred -g <my file>


Podría intentar usar este truco :

  1. Crea un archivo vacío

    % touch empty

  2. Recuperar para la versión A

    % cleartool diff -ser empty File@@/main/28 > A

  3. Recuperar para la versión B

    % cleartool diff -ser empty File@@/main/29 > B

  4. Difícil y ganancia!

    % your-diff-here AB

Ponlo en un script y haz que las opciones sean un poco más flexibles y ahí lo tienes.

Si lo desea, puede cortar fácilmente el cleartool diff crud off con un poco de awk o cut o perl o su veneno de elección.

¡Hurra por ClearCase!