2012-11-28 2 views
1

Nov12에서 main까지 단일 proc을 병합하려고합니다. 이 참조에서 검색 후 나는cleartool - 단일 프로세스 병합

로 출력을받은이를 실행 한 후 메인

Merge version 1 on the branch into the "latest" version in the "main" branch: 
ct merge -to new_update.sql -insert -version /main/Nov12/1 

에 지점에서 사본을 병합해야 다음 발견

Trivial merge: "new_update.sql" is same as base "/home/mtk/ct/[email protected]@/main/Nov12/0". 
Copying "/home/mtk/ct/new_update.sql @@/main/Nov12/1" to output file. 
Output of merge is in "new_update.sql.merge". 

new_update.sql.merge가 로컬 디스크에 전체 시저를 포함 , 그것은 clearcase 버전 제어가 아닙니다. 나는 이것을 확인하기 위해 ct lsh을했다.

메인에 새 버전을 만들어야하고 업데이트 된 사본 즉,/main/9가 아직 존재하지 않았 으면합니다. 최신 /main 버전은 8입니다.

그래서 하나의 proc을 병합하는 방법. 메인에서 복사본을 체크 아웃하고 위의 명령을 실행해야합니까? 저에게 알려주십시오, 나는 이것에 대해 명확하지 않습니다. 그래픽 대안을 사용할 수 없기 때문에 이에 대한 명령 줄 솔루션이 필요합니다.

답변

1

/main에 버전을 생성하도록 설정된보기에 있어야합니다.
는 대신, 병합 Nov12

페이지 "To merge selective versions from a subbranch"의 버전을 만들고 싶었 사용하는 병합 자세한 사항 :

cleartool merge [ -graphical ] -to target-path -insert contributor-version-selector [contributor-version-selector] 

을 그러나 그것은 또한 체크 아웃 대상 버전으로 먼저 필요.
즉, 병합 전에도 버전 트리에서 /main/8 버전 이후에 만들어진 버전을 확인해야합니다.

다시 올바른 대상보기에서 병합을 시도하십시오. /main에 새 버전을 만들었습니다.

+0

그렇다면 오해의 소지가 있으므로 내 대답을 삭제해야합니까? 아니면 혼란 스럽습니까? –

+0

@JonathanLeffler 답변의 요점은 내 것과 같습니다 : 타겟보기를 확인하십시오. 'findmerge' (특히'-fver' 옵션 사용 : OP가 임의의 태그를 설정하지 않았을 수도 있습니다)는 좋은 대안이므로, 여러분의 답을 기다리고 싶습니다. – VonC

+0

괜찮을거야. 고마워. –

2

문제는 출력이 어디로 가야하는지 지정하지 않았기 때문에 new_update.sql.merge 파일에 넣었습니다. 현재보기에는 대상 분기로 설정된 cspec가 있다고 가정하면 /main입니다. 당신이나은 ClearCase 중 하나가했던 가정,

mv new_update.sql.merge new_update.sql 

후 체크인합니다. (보기는 /main 분기를 참조하지 않는 경우, 잘못된 뷰에 병합하고) 당신은 지금 할 수있는 필요한 체크 아웃.


이것은 내가 일반적으로 병합하는 방식이 아닙니다. 그러나 그것이 잘못되었다고 말하는 것은 아닙니다. 내가 사용하는 메커니즘은 ct findmerge이며 로그 파일에서 명령을 실행합니다. 두 가지보기가 있는데, 하나는 Nov12 분기 (보기 태그는 nov12 일 수 있음)의 cspec이고 다른 하나는 주 분기에 대한 cspec이있는 현재보기입니다.

Needs Merge "./samizdat.c" [(automatic) to /main/XYZ.1.70/0 from /main/XYZ.1.70 
    /TEMP.bug233636.jleffler/1 (base also /main/XYZ.1.70/0)] 

이 같은 이름의 로그 파일을 생성합니다 :

ct findmerge -ftag nov12 new_update.sql 

출력과 같은 라인을 포함 할 수 있습니다

: 파일의 내용

findmerge.log.2012-11-27T23:12:43-08:00 

입니다 같은 명령

cleartool findmerge ./samizdat.c -fver /main/XYZ.1.70/TEMP.bug233636.jleffler/1 -log /dev/null -merge -cqe 

-merge은 '그래픽이 아닌 병합'(그래픽의 경우 -gmerge)을 의미합니다. -cqe은 '각 체크 아웃에 대한 의견 쿼리'를 의미합니다 (저는 항상 -c "Bug 233636: Brief title for bug"으로 바꿉니다).

가능한 가장 빠른 비즈니스 방법 일지는 의심 스럽지만 저에게는 효과적입니다. 필자는 파일 및 지사 이름을 위장했지만 리뷰가 승인되었다고 가정하면 미니 (마이크로) 기능에 대해 약 20 개의 파일을 병합하고 체크인하는 방법이 다소 다릅니다. 나는이 물건을 많이 운전하는 커버 스크립트를, 그래서 내 명령 시퀀스는 실제로있을 것입니다 :

fmp -l log 233636 /vobs/project/ /vobs/auxilliary 
fmm log 
ct ci -c 'Bug 233636: Brief title for bug' $(ct lsco -avo -cvi -s) 

fmp (병합 및 인쇄 찾기) 스크립트 출력 파일 log로가는 첫 findmerge를 실행합니다. fmm (병합 및 병합 찾기) 스크립트는 실제 병합을 수행하고 병합 할 파일에 대한 최종 체크인 메시지를 자동으로 제공합니다. 마지막 줄은 내 선택한 설명 (ctcleartool의 별칭)으로 체크인을 수행하며 fmm에 의해 제공된 설명을 무시합니다.

+0

와우, 나는 왜 당신이 아직도 내 앞에 쿼리의 http://data.stackexchange.com/stackoverflow/query/8782/users-who-post-long-answers (5000 게시물을 사용);) – VonC

+0

그리고 여기서'findmerge'가 필요하다고 생각하지 않습니다. 그러나 이것은 유효한 대안이므로 +1이됩니다. – VonC

+0

우; 다른 사람보다 평균 이상 게시물을 게시합니까? 그리고 내 rep/character가 가장 낮기 때문에 그리 효율적이지는 않습니다. 당신은 다른 1.3 MB의 대답을 타이핑하는 것이 가장 좋을 것입니다. (흥미 롭습니다; 내 게시물의 길이에 대한 표준 편차는 평균 게시물보다 큽니다!) –

관련 문제