Cleartool/Clearcase와 함께 사용자 정의 Diff 도구를 사용하는 방법이 있습니까?
문제
클리어 케이스 스냅 샷보기에서 작업 할 때 내 자신의 Diff를 사용하고 싶습니다.
내가 볼 수있는 한, 실행할 때 Diff 도구를 지정할 방법이 없습니다. "cleartool diff
", 그래서 나는 내가 같은 것을 달릴 수 있다고 생각하고 있었다"mydiff <predecessor file> <modified file in my view>
"하지만, 나는"전임자 파일 "을 찾을 수있는 클리어 케이스에 대해 충분히 알지 못합니다.
이것을 할 방법이 있습니까?
UNIX에 있다는 것을 언급하는 것을 잊어 버렸습니다.
해결책 5
나는 여기에서 제안을 바탕으로 다른 방법을 얻었습니다. ClearTool "Get"명령을 발견 했으므로 이전 버전을 임시 파일로 가져 오기 위해이를 실행합니다.
cleartool -fname.temp fname @@ precessor를 얻습니다
그런 다음 내 diff를 실행하고 해당 파일을 삭제하십시오.
모든 제안에 감사드립니다.
다른 팁
기본 차이 도구를 변경하는 방법
외부 Diff 도구를 지정할 수 있습니다 파일 수정 지도, "C : Program Files Rational Clearcase Lib Mgrs"
Paul이 제안한 Winmerge는 실제로 해당 파일을 수정합니다.
각 맵 라인에는 CC 필레 타입, CC 조치 및 응용 프로그램의 3 가지 부분이 있습니다.
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";
경고 : 확장 PathName (@@\...
) 동적보기에서만 액세스 할 수 있습니다 (M:\...
, 스냅 샷보기 (c:\...
).
스크립트는 다음과 관련이 없습니다 map
위에 제시된 파일 :
- 이 파일은 '유형 병합 관리자'를 정의합니다.
- 이 스크립트를 사용하면 주어진 파일에 사용할 올바른 차이를 찾기 위해 맵 파일을 읽지 않고 원하는 파일에서 Merge Manager를 실행할 수 있습니다.
여기에서는 정보를 모두 스크립트에 제공합니다 : 파일 (매개 변수) 및 Diff Exe (스크립트 구현 내에서 : 교체) mydiff
당신이 원하는 다른 exe에 의해).
또는 개선 된 DIFF 스크립트 (정적/스냅 샷보기에서도 작동)
다음은 스냅 샷과 동적보기에 맞는이 스크립트의 버전입니다.
스냅 샷보기의 경우 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";
또 다른 옵션은 사용하는 것입니다 git+clearcase (또는 참조하십시오 이것 또는 이것) 그리고 단지 git과 다릅니다.
이것은 매우 쉽게 설정하기 쉬우 며, 내 경험상 실제로 CC를 21 세기 도구로이기는 것보다 두 개의 VCS 시스템을 한 번에 두 뇌를 사용하는 것은 실제로 뇌를 덜 아프게합니다.
git을 CC와 Diff 사이의 다리로 생각하십시오 :-)
Snip2code에서 이미 그것에 대해 생각한 것 같습니다!
여기에서 원하는 것을 정확하게 수행하는 TCSH Bash 스크립트.
Custom-Diff-tool-for 클리어 케이스-객체
보시다시피 다음은 주어진 파일의 이전 버전을 가져 오는 키 코드입니다.
cleartool descr -pred -short $1
어디에 $1
비교할 파일 이름입니다.
#!/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 통합이 내장되어 있습니다. 도구 열기 -설정 -> 구성 -> 통합으로 이동하여 'Clearcase와 통합'버튼을 클릭하십시오. 이 도구에는 우수한 3 가지 Diff 지원이 있으며 UTF-8을 처리 하며이 자동 통합을 사용하면 맵 파일에서 요소 유형 등에 대해 걱정할 필요가 없습니다.
다음은 Clearcase XML Diff 도구 변경에 대한 IBM 문서에 대한 링크입니다.
XML Diff/Merge 유형 관리자 변경
http://www-01.ibm.com/support/docview.wss?rs=984&uid=swg21256807
당신은 사용해 볼 수 있습니다 이 트릭:
빈 파일을 만듭니다
% touch empty
버전 a에 대해 검색하십시오
% cleartool diff -ser empty File@@/main/28 > A
버전 b에 대해 검색하십시오. b
% cleartool diff -ser empty File@@/main/29 > B
Diff & Profit!
% your-diff-here A B
대본에 넣고 옵션을 좀 더 유연하게 만들면 거기에 있습니다.
원한다면 Cleartool Diff Crud를 약간 깎을 수 있습니다. awk
또는 cut
또는 perl
또는 당신의 선택의 독.
클리어 케이스를위한 만세!
"Winmerge"(무료 Diff 도구)를 설치했으며 Clearcase Diff 도구로 자체 설치했습니다. 어떻게했는지 잘 모르겠습니다.
언급 된 Winmerge는 클리어 케이스 설치를 자동으로 감지하고 Clearcase 설치 경로에서 맵 파일을 수정합니다.
Winmerge 설치가 모든 Neccessary 라인 항목을 변경하지 않았기 때문에 Clearcase가 자체 Diff 도구를 열 것입니다. 따라서 Clearcase의 문서를 읽어야 할 경우 수동으로 수정할 수 있습니다.
나에게 이것은 훌륭하게 작동합니다.
%vimdiff my_file.c my_file.c@@/main/LATEST
나는 보통 이렇게 진행합니다.
통일 된 차이cleartool diff -pred <my file>
그래픽 차이cleartool diff -pred -g <my file>