Cleartool/Clearcase와 함께 사용자 정의 Diff 도구를 사용하는 방법이 있습니까?

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

  •  22-08-2019
  •  | 
  •  

문제

클리어 케이스 스냅 샷보기에서 작업 할 때 내 자신의 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

당신은 사용해 볼 수 있습니다 이 트릭:

  1. 빈 파일을 만듭니다

    % touch empty

  2. 버전 a에 대해 검색하십시오

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

  3. 버전 b에 대해 검색하십시오. b

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

  4. 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>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top