Cualquier manera de utilizar una herramienta de diferencias a medida con cleartool / clearcase?

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

  •  22-08-2019
  •  | 
  •  

Pregunta

Me gustaría utilizar mi propia diff cuando se trabaja en una vista clearcase instantánea.

Por lo que yo puedo ver, no hay ninguna manera de especificar una herramienta distinta cuando se ejecuta "cleartool diff", por lo que estaba pensando que podría funcionar algo así como "mydiff <predecessor file> <modified file in my view>", pero no saben lo suficiente acerca de ClearCase para poder para encontrar el "archivo predecesor" diff contra.

Cualquier forma de hacerlo?

Se olvidó de mencionar (hasta ahora, después de leer las dos primeras respuestas que se ocupan de las ventanas) que se trata en Unix, y no se me permite a lodo con la configuración de ClearCase.

¿Fue útil?

Solución 5

Tengo otra forma de trabajo basado en las sugerencias aquí. Descubrí la cleartool "" command, por lo que yo haga esto para obtener la versión anterior de un archivo temporal:

cleartool get -para fname.temp fnombre @@ predecesor

A continuación, ejecute mi diff, y eliminar ese archivo.

Gracias por todas las sugerencias.

Otros consejos

¿Cómo cambiar las herramientas de diferencias por defecto

Puede especificar una herramienta externa de diferenciar por modificando el archivo mapa , en "c: \ archivos de programa \ Rational \ ClearCase \ lib \ mgrs"

El WinMerge sugerido por Paul realidad modifica ese archivo.

Cada línea 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 asignación de tipos de archivos text_file_delta. Allí podrá encontrar líneas de actuación CC comparar, xcompare, se fusionan, y xmerge que se parecen a esto:

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 href="http://www.downloadatoz.com/howto/use-beyond-compare-with-clearcase.html" de su elección herramienta de diferencias .


O bien, un simple script diff

Si quiere ir a toda la línea de comandos en este (que me gusta ;-)), un poco 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: nombre de ruta extendida (@@\...) sólo es accesible en visión dinámica (M:\..., no vista de instantáneas (c:\...)

.

El guión no tiene nada que ver con el mapfile presentado anteriormente:

  • ese archivo entiende por «tipo de combinación de los directivos.
  • Este script le permite ejecutar cualquier gestor de mezcla en cualquier archivo que desee, sin necesidad de leer cualquier archivo de mapa para buscar la exe diff derecho de uso de un archivo determinado.

A continuación, se proporciona a la secuencia de comandos ambas informaciones: el archivo (como un parámetro) y el exe para ejecutar diff (dentro de la implementación de la escritura: sustituir mydiff por cualquier exe diff desea)

.

O, la mejora de script diff (funciona en puntos de vista estático / instantáneas también)

Aquí es una versión de este script que funciona tanto para instantáneas y visión dinámica.

En vista de instantánea, utilizo del chacmool sugerencia: cleartool get

.

Una vez más, se puede reemplazar el comando diff incluido en este guión de la herramienta de su elección.

#!/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";

Otra opción es utilizar Git + ClearCase (o ver este o este ) y justo diff con Git.

Esto es muy fácil de configurar y, en mi experiencia, que de hecho duele el cerebro menos el uso de dos sistemas de control de versiones a la vez que tratar de vencer a CC en ser una herramienta del siglo 21.

Sólo piensa en Git como un puente entre CC y diff: -)

Parece que alguien ya pensó en snip2code
Aquí un script bash Tcsh que hace exactamente lo que desea.

Custom-diff-herramienta- para-clearcase a objetos

Como se puede ver el siguiente es el código de la llave para obtener la versión anterior de un archivo determinado:

cleartool descr -pred -short $1

Cuando $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 construido en la integración. Abra la herramienta - vaya a Configuración -> Configuración -> Integración y haga clic en el 'integrarse con ClearCase' botón. Esta herramienta tiene un excelente soporte diff de 3 vías, se ocupa de UTF-8 y con esta integración automatizada usted no tiene que preocuparse acerca de los tipos de elementos, etc en el archivo de mapa.

Aquí hay un enlace a la documentación de IBM en el cambio de la herramienta de diferencias XML ClearCase:

Cambiar el código XML de diferencias / fusión Type Manager

http://www-01.ibm.com /support/docview.wss?rs=984&uid=swg21256807

Se podría tratar de 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 y beneficio!

    % your-diff-here A B

Lo puso en un guión y hacer que las opciones un poco más flexible y ahí lo tienes.

Si lo desea, puede fácilmente cortar la porquería cleartool diff con un poco de awk o cut o perl o el veneno de la elección.

Hurra por ClearCase!

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

WinMerge como se ha mencionado de forma automática detecta una instalación de ClearCase y modifica el archivo de mapa en el Clearcase ruta de instalación.

temas

he experimentado eran ClearCase abrirá su propia herramienta de diferencias en su lugar porque la instalación WinMerge no cambió todos los elementos de línea es necesario. Así que es una buena idea leer la documentación de ClearCase para que pueda fijar de forma manual si es necesario.

Para mí esto funciona muy bien:

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

Por lo general proceder de esta manera.

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

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

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