Comment changer les outils de diff par défaut
Vous pouvez spécifier un outil de comparaison externe en modifier le fichier carte , dans "c : \program fichiers \rational\ClearCase\lib\mgrs "
Le WinMerge suggéré par Paul modifie en fait ce fichier.
Chaque ligne de carte comporte 3 parties : le type de fichier CC, l'action CC et l'application.
Trouvez la section dans le fichier de carte pour les types de fichiers text_file_delta. Vous y trouverez des lignes pour les actions CC compare, xcompare, merge, et xmerge qui ressemblent à ceci :
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
Vous pouvez les remplacer par le exécutable de l'outil de comparaison de votre choix .
Ou, un simple diff script.
Si vous souhaitez utiliser une ligne de commande complète (ce que j'aime bien ;-) ), un petit ccperl peut vous aider :
#!/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";
Attention : nom de chemin étendu ( @@\...
) n'est accessible qu'en vue dynamique ( M:\...
et non la vue instantanée ( c:\...
).
Le script n'a rien à voir avec les map
présenté ci-dessus :
- ce fichier définit les "gestionnaires de fusion de types".
- Ce script vous permet d'exécuter n'importe quel gestionnaire de fusion sur n'importe quel fichier que vous voulez, sans lire aucun fichier map pour chercher le bon diff exe à utiliser pour un fichier donné.
Ici, vous fournissez au script les deux informations : le fichier (en tant que paramètre) et le diff exe à exécuter (dans l'implémentation du script : replace mydiff
par le diff exe que vous voulez).
Ou, diff amélioré script (fonctionne aussi dans les vues statiques/snapshot)
Voici une version de ce script qui fonctionne pour la vue instantanée et dynamique.
Pour la vue instantanée, j'utilise la suggestion de chacmool : cleartool get
.
Là encore, vous pouvez remplacer le diff
inclus dans ce script par l'outil de votre choix.
#!/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";
0 votes
J'ai juste ajouté un avertissement sur le script qui ne fonctionne correctement qu'en dynamique vue, en réponse à votre commentaire