문제

특정 레이블로 표시된 Clearcase에서 파일을 찾고 싶습니다. 다른 레이블 세트가 없습니다.

예를 들어, 다음과 같이 레이블이 붙은 파일이있는 경우 다음과 같습니다.

file1 LBL_A, LBL_B
file2 LBL_A

파일 1이 아닌 File2 만 제공하는 쿼리를 원합니다.

ClearTool Find와 함께이 작업을 수행하는 방법이 있습니까? 이것이 단일 쿼리와 관련이 없다면, 여러 단계 로이 작업을 수행하는 방법에도 기뻐할 것입니다 (Perl 스크립트에서 Cleartool을 호출하므로 파일 목록을 쉽게 저장할 수 있습니다. 일시적으로 추가 명령을 실행하십시오).

많은 감사드립니다!

1 월

도움이 되었습니까?

해결책

LBL_A가 실행하고 싶은 (유일한) 레이블이라고 가정합니다.

cleartool find /some/dir -version 'lbtype(LBL_A)' -print | xargs cleartool describe -fmt "%n: %l"

주어야합니다

file1: (LBL_A, LBL_B)
file2: (LBL_A)

출력으로 Perl 스크립트를 확인하거나 필터로 확인할 수 있습니다. sed -n 's/\(.*\): (LBL_A)/\1/p' (파일 이름의 콜론이 없다고 가정).

업데이트 : Vonc가 올바르게 지적한 것처럼 위의 명령은 공간이있는 파일에 실패합니다. 해당 실행을 처리하려면 다음과 같이 처리합니다.

cleartool find ... -print | tr '\012' '\000' | xargs -0 cleartool ....

이것은 NewLines를 ASCII Null로 번역 한 다음 Xargs가 그것을 구분기로 사용하게합니다.

다른 팁

파이프하지 않고도 직접 할 수 있습니다.

cleartool find . -ver "lbtype(LBL_A) && !lbtype(LBL_B)" -print

Hlovdal의 대답 이 경우 필요한 것보다 더 많은 요소를 찾아서 필터링해야한다는 것을 보여줍니다. 클리어 케이스 기능을 찾습니다).

메모:

 cleartool find . -type f -element 'lbtype_sub(LBL_A)' -print

당신에게 줄 수 있습니다 곧장 요소 (이 경우 흥미롭지 않을 수있는 버전이 아님). 버전을 찾을 수 있습니다 -version 및 아래 설명 된 형식 지침.

의 도움으로 fmt_ccase, 당신은 출력을 조정할 수 있습니다 정확하게 Perl 스크립트가 계속해야 할 것 :

 cleartool find . -type f -element 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%En %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","
  • -fmt "%En %l\n" 의 전체 경로를 표시합니다 요소 (버전 대신 :/a/b/myfile @@/main/myversion) => /a/b/myFile'. the 'n 라인 당 하나의 결과를 확인하십시오.
  • -version 그리고 -fmt "%n %l\n" 버전을 표시합니다
  • \"$CLEARCASE_XPN\": 이중 인용문은 발견 된 버전의 확장 경로를 찾을 수 있습니다.
  • grep -v ",": 쉼표가 있으면 "둘 이상의 레이블"을 의미합니다.
  • %Cl: 표시하지 마십시오 모두 라벨 목록. 어쨌든, 둘 이상이 있다면, 당신은 관심이 없습니다!

따라서 정확한 것을 찾기위한 것입니다 버전:

 cleartool find . -type f -version 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%n %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","|awk '{sub(/ \(.*/,"");print}'

메모:
위의 것은 Unix Syntax와 함께 작동합니다. Windows 구문은 다음과 같습니다.

cleartool find . -type f -element "lbtype(LBL_A)" -exec "cleartool describe -fmt \"%n %Cl\n\" \"%CLEARCASE_XPN%\"" | grep -v "," | gawk "{gsub(/ \(.*,"");print}"

, 하나의 (올바른) 레이블 만있는 파일 버전을 나열합니다.

  • awk '{sub(/ \(.*/,"");print}' 변환 "myFile@@/main/myVersion (LBL_A)""myfile @@/main/myversion으로 "
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top