Как изменить стандартные инструменты сравнения
Вы можете указать внешний инструмент сравнения, изменив файл map , в "c: \ program files \ рациональный \ ClearCase \ lib \ mgrs"
WinMerge, предложенный Полом, на самом деле изменяет этот файл.
Каждая строка карты состоит из 3 частей: тип файла CC, действие CC и приложение.
Найдите раздел в файле карты для типов файлов text_file_delta. Там вы найдете строки для операций CC сравнения, xcompare, merge и xmerge, которые выглядят так:
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
Вы можете заменить их на исполняемый файл выбранного вами инструмента сравнения .
Или простой скрипт diff
Если вы хотите использовать полную командную строку для этого (что мне нравится ;-)), небольшой ccperl может помочь:
#!/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";
Предупреждение: расширенный путь (@@\...
) доступен только в динамическом представлении (M:\...
, а не в режиме моментального снимка (c:\...
).
Скрипт не имеет ничего общего с файлом map
, представленным выше:
- этот файл определяет «Менеджеры слияния типов».
- Этот скрипт позволяет вам запускать любой менеджер слияния для любого файла, который вы хотите, не читая файл карты, чтобы найти подходящий файл diff для использования с данным файлом.
Здесь вы предоставляете сценарию обе информации: файл (в качестве параметра) и исполняемый файл (в рамках реализации сценария: замените mydiff
на любой другой желаемый файл).
Или улучшенный сценарий сравнения (работает также в статическом режиме и в режиме моментального снимка)
Вот версия этого скрипта, которая работает как для моментального снимка, так и для динамического просмотра.
Для просмотра снимков я использую предложение chacmool: cleartool get
.
Опять же, вы можете заменить команду diff
, включенную в этот скрипт, выбранным вами инструментом.
#!/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";