2017-04-20 14 views
3

Perforce에서는 많은 분기와 병합을 수행합니다. 하나의 변경 사항이 도입 된 원래의 변경 목록을 어떻게 찾을 수 있습니까?Perforce에서 원래 하나의 변경 목록을 가져 오는 방법을 찾는 방법

예를 들어, 사설 지사에서 ID가 53343 인 변경 목록을 제출하고 이틀 후 법인 지점 A에 병합 한 다음 일주일 후 통합 지점 B에 병합되고 결국 , 그것은 메인 브랜치에 병합됩니다. changelist id는 실제로는 55445라고합시다. 병합입니다. 사실 많은 changelists가 포함되어 있습니다.

지금 어떻게 원래 "53343"을 얻을 수 있습니까?

다음은 더 자세한 설명입니다.

예를 들어, 저장소 범위의 한 파일에 대한 변경 기록을 알고 싶습니다.

$ p4 changes //prod/main/platform/abc.txt 
Change 560938 on 2017/04/13 by [email protected]:main 'bug fix2' 
Change 559384 on 2017/03/24 by [email protected]:main 'bug fix1' 
Change 559178 on 2017/03/22 by [email protected]:ws 'Merge [email protected] to main ' 

우리는 병합에서 오는 것을 볼 수 있습니다. 그리고 사용 주석을

$ p4 annotate -I //prod/main/platform/abc.txt 
. 
. 
. 
554294: Monday morning 
554294: I love foot ball 
554294: XNES rocks 
. 
. 
. 

우리가 변화를 알 수 있습니다 먼저 554,294

$ p4 describe 554294|more 
Change 554294 by [email protected]:coorA on 2017/01/17 19:24:51 
Integrate all dev changes to coorA 

Affected files ... 

. 
. 
. 
... //prod/coorA/platform/abc.txt#1 add 
. 

554,294에서 병합을하다 와서,이 병합에, 파일 abc.txt이 추가됩니다. 그러나 사실이 abc.txt는 여기에 생성 된 원본이 아닙니다. 내 dev 브랜치에 abc.txt를 만들었지 만 브랜치 키퍼가 나에게서 그것을 복사하고 그의 브랜치에 "p4 add"를했다. 그래서, 이제는 메인 브랜치에 대해서만 볼 수 있습니다. abc.txt는 원래 coorA 브랜치에서 왔습니다. 이 파일의 실제 소유자를 잃어 버렸으므로 지점 유지 자만 추적 할 수 있습니다.

우리가 원했던 것은 원래 소유자를 얻는 것이지만 coorA 분기에 추가 될 때 우리는 관계를 잃었습니다. 예를 들어 파일 md5sum으로 더 깊게 다시 추적 할 수 있습니까?

+0

"branch keeper"*가 수동으로 파일을 복사 한 경우 (즉,'p4 copy' 또는'p4 integrate'를 사용하지 않고) Perforce가 파일을 복사했음을 알리지 않고 그 파일들이 어디서 왔는지를 마법으로 파악하십시오. – jamesdlin

답변

1

특정 파일의 변경 내용을보고 있다고 가정합니다. P4V에서 해당 파일을 찾아 마우스 오른쪽 버튼으로 클릭하고 수정본 그래프을 선택하십시오. 그러면 변경 사항이 전파되는 방식에 대한 그래프가 표시됩니다. 그래프의 각 노드는 파일의 한 버전입니다. 병합 그래서, 당신이 할 수 드래그 앤 드롭 한 신속하게 파일의 다양한 버전 사이의 변화를보고, 53343. 또한

에 55,445에서 당신을 가져올 것이다 까지 오류를가는 화살표 (가장자리)로 표시됩니다 노드의 그래프를 다른 그래프로 드래그하면 P4V가 diff를 표시합니다.

+0

감사합니다. 그렇습니다. 대부분의 경우 도움이됩니다. 내 사건은 약간 다르다. Perforce의 잘못된 사용법 일 수도있다. 위 참조. – Evilight

1

변경 사항 55445는 많은 다른 분기의 많은 변경 사항을 포함 할 수 있습니다. 다음 명령을 실행하면 그들 모두를 볼 수 있습니다

p4 changes -i @55445,55445 

을하지만 당신은 더 구체적인 "변화"의 소스를 얻기 위해 노력하고 말할 때 나는 당신이에 대해 묻는거야 것은 변화 55,445 내의 특정 DIFF 생각 , 즉 특정 파일에 특정 행이 있으며 원본을 찾으려고합니다. 이를 위해, 실행

p4 annotate -I //depot/file 

p4 annotate 명령은 각 행은 해당 파일 내에서 시작된 수정/변경을 보여줍니다; -I 플래그는 병합 관계를 추적하여 서로 다른 브랜치에서 각 행의 진정한 원점을 찾습니다.

출처 : 몇 년 전에 내가 쓴 블로그 게시물. :) https://www.perforce.com/blog/101213/p4-annotate-i-going-deeper

+0

도와 주셔서 감사합니다. Perforce를 잘못된 방식으로 사용했기 때문에 제 경우가 조금 다릅니다. 필자의 경우, 내 changelist가 여러 파일을 추가하고 있습니다. 사설 지사 -> 지사 A에서 지사는 "p4 annotate"에서부터 사설 지사에서 복사 한 지사 A에서 "p4 add"를 사용합니다. ..... 원래 제출은 기업 지점 A ..... – Evilight

+0

입니다. 이것은 나에게 분명하지 않습니다. 분기 A에 추가 된 새로운 파일 인 경우, 변경 사항과 관련하여 무엇을해야합니까? 너의 지점? –

+0

코멘트에 모두 입력 할 수 없다면 내 문제가 무엇인지 보여주기 위해 질문을 편집해야합니다. – Evilight