보통 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_branches
및 list_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}. 또한 '대상 통합 분기'속성이 없으면 더 이상 조사 할 필요가 없음을 결정하지 않는 한 더 이상 병합 검사를 필요로하지 않는 분기를 식별하기 위해 별도의 속성이 필요합니다. 이는 병합이 필요한 분기에 대상 통합 분기를 추가하는 경우의 개조 문제를 줄입니다. 기본적으로 모든 기존 분기는 완전히 병합 된 것으로 간주됩니다.
내가 도움을 주셔서 감사합니다. 나는 그것을 '하나의 명령'으로 제한하면 안된다. 이 작업을 수행 할 수있는 스크립트가있을 수 있습니까? – Chris