2017-11-06 7 views
1

배경

사이 (사용자 제외) 모든 변경 목록을 가져옵니다.나는 "주류"창고 및 억지로에 "베타"지점을 가지고 "주류"및 지점

"mainline"의 최신 코드를 "베타"분기에 병합하고 싶습니다. 하루에 한 번씩이 작업을 수행해야하며 매일 "주류 지점"에 약 100 개 이상의 커밋/제출이 있습니다.

일반적으로, 정말 같은 것을 할 것입니다 :

p4 integ //prod/mainline/... //prod/beta/... 
cd $(p4 where //prod/beta/... | cut -d ' ' -f3 | sed 's/\.\.\.$//g') 
p4 resolve ./... 

문제

그러나, 우리는 등, 빌드 스크립트를 다양한 메이크 파일의 버전 번호를 업데이트하는 성가신 시간당 빌드 프로세스를 가지고, 버전/지점 번호를 업데이트하고 빌드 서버에서 '더미'계정 (예 : dummy_user)을 사용하여 PERFORCE에 체크인합니다. 이 작업은 모든 분기 ()에서 수행되므로 병합 작업에 임의의 충돌이 발생할 수 있습니다.

이 버전 번호를 제출하면 이제 p4 integ/p4 resolve 작업이 완전하게 완료되지 않으며 "버전 번호 업데이트 작업"의 영향을받는 파일을 모두 수동으로 병합해야합니다. 이 버전 번호의 말도 안되는 실제 코드 변경 사항을 손으로 병합하고 싶습니다.


질문

p4 integ에 대한 방법은 사용자 제외 (주/다른-분기하지만 현재) 아직 지점에 존재하는 변화 목록 의 집합이 있습니까? 그러나, 나는이 모든 변화리스트의 목록을 얻을 수있는 자동화 된 방법이 없습니다

for i in $(p4 changes //prod/mainline/... | grep -v dummy_user | cut -d ' ' -f2) 
do 
    p4 integ //prod/mainline/[email protected]${i},${i} //prod/beta/... 
done 

: 난 항상 뭔가를 할 수있는 ...

  • mainline의 존재를
  • 하지만 아직 병합/통합되지 않았습니다. beta ...
  • dummy_user으로 작성하지 않았습니다.

어떻게하면됩니까?

답변

2

는 들리지만, FWIW 여기에 내가 할 줄 무엇 : 즉,이 다음 부분 쉽게 이후

0)가 branchspec합니다

p4 --field "View=//prod/mainline/... //prod/beta/..." branch -o prod-main-beta | p4 branch -i 

1) 로보 - 커밋 (나는 가정 당신이 혼자이 일을 떠나고 싶어) 무시 :

p4 -Ztag -F @=%change% ichanges -u dummy_user -b prod-main-beta | p4 -x - integ -b prod-main-beta 
p4 resolve -ay 
p4 submit -d "Begone, robo-cruft!" 

2) 수행 "진짜"INTEGRA을 테. "더미"변경 사항을 선택해야하는 경우에는 -Rs 옵션을 사용해보십시오. 더 많은 병합을 제공 할 수 있지만 역으로 병합되어 병합에 이미 통합 된 항목이 포함되지 않도록합니다. .

p4 integ -b prod-main-beta [-Rs] 
p4 resolve [-am] 
p4 submit 

3) 버전 정보가 전용 파일에 있고 다른 빌드 파일이 해당 파일에 링크되도록 빌드 도구를 개선하십시오. 그런 다음 분기 사양에서 버전 파일을 제외하거나 체리 피킹 등의 작업없이 변경 사항을 무시할 수 있습니다. 실제 예가 여기에 있습니다 : https://swarm.workshop.perforce.com/files/guest/perforce_software/p4/2015-1/Version

+0

"더 표준적인"(더 많은 P4, 적은 외부 스크립트) 옵션이 있기 때문에 받아들입니다. 길 아래쪽에있는 해당 지점 스펙을 다시 사용하려면 어떤 단계를 수행해야하는지 알려주십시오. 감사! – DevNull

+2

추가 단계가 없으므로 branchspec의 장점입니다. 한번 만들면 여러 번 사용하십시오. :) –

1

다른 퍼 포스 (Perforce) 질문을 검색하는 동안 우연히 적절한 질문을 찾았습니다. 즉, 내가 좋아하는 뭔가를하고 싶지 : 이제

for i in $(p4 interchanges //prod/mainline/... //prod/beta/... \ 
      | grep -v "dummy_user"        \ 
      | cut -d ' ' -f2) 
    do p4 integ //prod/mainline/[email protected]${i},${i} //prod/beta/... 
done 

를, 드디어 로보 - 커밋 손 병합 30 분을 낭비하지 않고 다음과 같은 작업을 할 수 있어요.당신은 당신을 위해 작동하는 솔루션을 찾을 것 같은

p4 resolve -am //prod/beta/...