2010-03-23 4 views
2

분기에 여러 개의 작은 파일로 분할 된 커다란 소스 파일이 있습니다. 이 문제를 처리 할 수있는 분기 뷰를 만들고 싶지만 PERFORCE (2009.1)는 여러 파일 중 마지막 파일 만 봅니다. 예를 들어, 내가 만든 :여러 파일로 분할 된 파일에 대한 분기보기

p4 integrate //depot/new/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_three.c 

그런 다음 (//depot/new/huge_file.c 포함) 사람들의 각각을 편집하고 제출

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 

나중에 내가 작은 것들에 큰 파일을 분할.

이제 //depot/original/huge_file.c으로 변경하고 이러한 변경 사항을 //depot/new에 통합하려고합니다. 내가 수동으로 이렇게 할 경우, 그것을 잘 작동합니다 :

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_three.c 

하지만 내가 통합 할 때마다 그렇게하고 싶지 않아 - 이런 종류의 분기보기에 속한다.

불행히도 분기보기에 동일한 소스 파일이 여러 번 포함되는 경우 후속 행은 이전 행을 무시합니다. 어떻게하면이 같은 분기보기를 만들 수 있습니다

//depot/original/huge_file.c //depot/new/huge_file.c 
//depot/original/huge_file.c //depot/new/small_file_one.c 
//depot/original/huge_file.c //depot/new/small_file_two.c 
//depot/original/huge_file.c //depot/new/small_file_three.c 

나는이 지점 사양을 사용하여 통합 난 단지 small_file_three.c 통합 얻을.

답변

3
난 당신이 (처리 할 수있는 사양의 모든 라인을 강제하는 수단)를 overlay mapping를 사용하지만, 페이지의 빠른 열람이 그에 kibosh 넣을 것을 제안 거라고

:

오버레이 매핑은 클라이언트보기에서만 허용되고 분기보기에서는 작동하지 않습니다.

스크립트를 작성해야 할 것 같습니다. This page은 사용자에게 유용 할 수있는 정보가 더 있습니다. (이 기능을 수행 할 수 없다는 사실을 강조했습니다. "Perforce는 1 : 많은 파일 매핑을 지원하지 않습니다.").

+0

내가 Perforce에서 한 또 다른 가능한 해결책은 각각의 새로운 파일 각각을 지정하기 위해 여러 개의 분기보기를 갖는 것입니다. 그것은 clunky,하지만 이것과 비슷한 많은 split을 할 때, 그것은 다른 소스 파일들과 같은 branch specs를 재사용 할 수 있기 때문에 꽤 잘 작동하게되었습니다. –

0

관심사가되었지만 그 이유는 무엇입니까?

왜 거대한 파일을 PERFORCE에 포함시키지 않았고, 빌드 시스템을 변경하여 소스가 제어하는 ​​3 개의 작은 소스 파일에서 어셈블하도록하십시오. 아니면 단순하게 # 원한다면 # 포함 시키십시오.

다른 말로하면, 당신이하고 싶은 작업에 잘못된 도구를 사용하려고하는지 궁금합니다.

+0

소스 파일 huge_file.c는 이미 Perforce에 있었고 실제로는 별도의 컴파일 단위에 속한 몇 가지 독립적 인 것들을 모아 놓은 것이되었습니다. 나는 그것을 소스 코드를 정리하는 방법으로 분리했다. 이제 각 소스 파일은 훨씬 작고 관리하기 쉽습니다. – ScottJ

+0

// depot/original은 이전 버전의 제품이며 그 지점에서 새로운 개발이 일어나지 않고 버그 수정 만한다고 설명해야합니다. 새로운 개발은 // depot/new에 있습니다. 따라서 P4에서 두 가지를 통합 할 필요가 있습니다. – ScottJ

관련 문제