2011-09-18 2 views
3

우리는 ClearCase를 사용하며 수정할 수 있지만 병합되지 않은 파일을 찾는 방법을 찾으려고합니다. 우리는 ClearCase의 최상위 레벨에 메인 브랜치를두고 있으며, 여기에서 최종 소스 코드 변경 사항을 병합하고 정식 릴리스 빌드를 수행하는 곳입니다. 그런 다음 통합 문제가있는 주요 지점 아래에 통합 지점이 있습니다. 통합 분기에서 모든 것이 작동하고 테스트되면 통합 분기를 main으로 병합합니다. 개별 기능 구현 및 버그 수정을 위해 통합 지점에서 새 지점 (일반적으로 작업, 기능 또는 버그 수정)을 작성하고 문제를 해결합니다. 우리가이 작업을 마쳤을 때, 그 변경 사항을 통합 분기에 병합합니다.ClearCase에서 병합되지 않은 파일/요소를 모두 찾으십시오.

어떤 사람이 파일이 기능/버그 수정 지점에서 수정되었지만 통합 분기로 병합되지 않았는지 확인하는 방법이나 명령을 알고 있는지 궁금합니다. 나는 주변을 둘러 보았지만 그것을 할 길을 찾을 수없는 것 같습니다. 내가 명령을 실행할 수 있고 모든 하위 지점에서 수정되었지만 병합되지 않은 모든 파일을 말해 줄 수 있습니다 싶습니다. 감사.

답변

3

보통 ct findmerge을 사용하여 하나의 분기 또는보기에서 현재보기로 병합 할 파일을 찾습니다 (cleartool의 별칭 인 ct으로 가정).

관심있는 모든 지점을 확인하고 각 지점에 대해 각 대상 지점에 대해 별도의 ct findmerge 작업을 수행해야한다고 생각합니다. 그것은 복잡합니다. 또한 완전히 병합 된 것으로 알려진 여러 분기를 제거 할 수 있기를 원합니다. 분기가 완전히 병합되었음을 나타 내기 위해 분기에 주석을 달 수 있습니다.

그래서이 작업을 수행하는 간단하고 단일 명령이 없다고 생각합니다.


당신이 우려하는 대상 지점을 결정해야합니다. 이들은 귀하의 통합 지점 (들) 것입니다. 아마, 당신은 이것들의 아주 작은 목록을 가지고있을 것입니다.

각 대상 분기에 대해 해당 통합 분기와 관련된 작업 분기를 결정해야합니다. 이것은 까다로운 부분입니다. VOB의 정보를 사용하여 특정 버그 수정 또는 기능 분기가 해당 통합 분기와 관련이 있는지 여부를 쉽게 판단 할 수 없습니다. 그것은 실제로 사용자들에게만 알려져 있습니다. find_outstanding_merges_for_integration_branch 조금처럼 보이는

for int_branch in $(list_relevant_integration_branches) 
do 
    ...create view with tag $tag for $int_branch... 
    ct setcs -f $(cspec_for_integration_branch $int_branch) $tag 
    ct setview -exec "find_outstanding_merges_for_integration_branch $int_branch" $tag 
done 

:

당신은 다음 (아웃 라인) 수행하는 스크립트를 필요로이 명령을 가정합니다

vob_list=$(list_relevant_vobs) 
for mrg_branch in $(list_relevant_merge_branches $int_branch) 
do 
    echo 
    echo "Merges from $mrg_branch to $int_branch" 
    ct findmerge $vob_list -fversion .../$mrg_branch/LATEST -print 
done 

주의 (a) 현재보기는 적절하다 (b) 통합 분기 이름이 인수로 전달됩니다.

-print 대신 자동 또는 그래픽 병합 처리 방법을 결정할 수 있습니다. 어려운 부분은 여전히 ​​list_relevant_integration_brancheslist_relevant_vobs과 같이 작성되지 않은 명령입니다. 단순 할 수도 있습니다 :

# list_relevant_integration_branches 
cat <<EOF 
integration_branch_version_3_0 
integration_branch_version_3_1 
integration_branch_version_4_0 
EOF 

# list_relevant_vobs 
cat <<EOF 
/vobs/mainproject 
/vobs/altproject 
/vobs/universal 
EOF 

또는 훨씬 더 복잡 할 수 있습니다. (하나의 VOB 만 가지고 있다면 인생은 훨씬 간단 해집니다. 우리가 사용하는 시스템은 20 가지의 VOB를 cspec에서 볼 수 있습니다.)

다른 씌어 있지 않은 스크립트는 list_relevant_merge_branches입니다.나는 그것을 쓰는 간단한 방법이 있는지 모르겠습니다. 개 _ 브랜치 (예 : '목표 통합 분기'속성 유형, 열거 유형)가 작성 될 때 적절한 속성 유형 (ct mkattype, ct mkattr)을 정의하고 적용하면이를 사용하여 사용자를 안내 할 수 있습니다. 그러면 개조 문제가 생깁니다. 기존의 각 작업 브랜치에 올 Y 른 속성을 얻는 f}. 또한 '대상 통합 분기'속성이 없으면 더 이상 조사 할 필요가 없음을 결정하지 않는 한 더 이상 병합 검사를 필요로하지 않는 분기를 식별하기 위해 별도의 속성이 필요합니다. 이는 병합이 필요한 분기에 대상 통합 분기를 추가하는 경우의 개조 문제를 줄입니다. 기본적으로 모든 기존 분기는 완전히 병합 된 것으로 간주됩니다.

+0

내가 도움을 주셔서 감사합니다. 나는 그것을 '하나의 명령'으로 제한하면 안된다. 이 작업을 수행 할 수있는 스크립트가있을 수 있습니까? – Chris

3

당신이 (주제 Jonathananswer, 내가 upvoted 가지고있는에 설명) 소스 및 대상 지점을 알고 있다면, 다음 query primitive병합 잊지 마세요 : 모든 경우에

merge (from-location , to-location) 

을 , TRUE 개체가 속한 요소가 병합 하이퍼 링크 (기본 이름 : Merge)이면 from-locationto-location을 연결합니다.
분기 경로 이름 또는 버전 선택자를 사용하여 위치 중 하나 또는 둘 다를 지정할 수 있습니다.
병합 하이퍼 링크에 해당 분기의 버전이 관련된 경우 분기를 지정하면 TRUE이 생성됩니다.
분기 경로 이름이 완료되어야합니다 (예 : /main/rel2_bugfix, rel2_bugfix 아님).

어떻게가 체크인 멀리 병합되지 않습니다 특정 지점에있는 모든 요소를 ​​찾을 수 있습니다 :

This thread

행동에서 해당 쿼리를 보여? "하이퍼 링크를 병합"고
cleartool find \\view\administration\ProjectVOB \ 
    -branch "brtype(HNH-372452) && \ 
    !merge(...\HNH-372452\LATEST,...\main-372452\LATEST)" -print 

\\view\administration\ProjectVOB\Com-API\Dll\COMFrontendDll\[email protected]@\main\HNH-372452 
\\view\administration\ProjectVOB\geometry\geochain\[email protected]@\main\HNH-372452 

는 버전 트리에서 볼 수있는 빨간색 화살표입니다 :
(참조 기사 " Versioning and parallel development of requirements")

red arrow in version tree

관련 문제