2009-04-07 2 views
11

Perforce 디포에서 개별 개발 브랜치를 만드는 데 사용할 수있는 방법의 장단점에 대한 피드백을 찾고 있습니다. 제가 올바르게 이해한다면, 이것을 처리 할 수있는 두 가지 방법이 있습니다. 첫 번째는 작업중인 분기의 전체 복사본 인 Private 분기를 만드는 것입니다. 지점은 완전히 독립하여 목표 지점에서 변경 사항을 완전히 분리합니다.퍼 포스 데브 브랜치 - 스파 스 브랜칭 대 사설 브랜치

내가 추천 한 다른 방법은 스파 스 분기입니다. 이것은 Practical Perforce (9 장, p.242)에 설명되어 있습니다. 이렇게하면 브랜치가 작성되지만 편집 할 필요가있는 파일 만 있습니다. 그런 다음 대상 분기 클라이언트보기를이 스파 스 (dev) 분기 클라이언트보기와 겹칩니다.

두 가지 방법 모두 프로그래머가 대상 분기에서 변경 사항을 가져 오기 위해 일부 통합 작업을 수행해야합니다. 사설 지회 (Private Branch) 방법은 전체 지부의 복사본을 만들기 위해 훨씬 더 많은 추가 메모리가 필요한 것처럼 보입니다. 그러나 Perforce 설명서에서는이 상황에서 "지연 복사"를 수행한다고 설명합니다.

또한 통합을 통해 PERFORCE는 파일의 "지연 복사"를 수행 할 수 있습니다. 파일을 분기 할 때 서버는 실제로 파일의 사본 두 개를 보유하지 않습니다. 단지 소스 파일을 보유하고 데이터베이스의 포인터는 대상 파일에 대한 분기가 발생했다는 사실을 기록합니다. Lazy 복사본은 분기 작업을 오버 헤드가 적은 작업으로 만듭니다. 서버는 파일의 중복 사본을 추적 할 필요가 없습니다. 이는 스파 스 브랜치 방법은 단지 예를 들어, 개발자는 그들이 스파 스 브랜치에 추가하지 않은 그 파일에 대한 작업을 시작할 수 있고, 같은 프로세스에 인적 오류의 가능성을 추가하는 것처럼 보일 수 있습니다

실수로 빌드를 손상시키는 대상 분기의 변경 사항을 업데이트하십시오. 그러나 Sparse 분기 기능은 이유가 있습니다. 왜 그것이 존재하고 왜 내가 완전한 사설 지사 (또는 그 반대)를 통해 사용해야하는지에 대한 피드백은 크게 감사 할 것입니다.

답변

3

문서 공간에서 언급했듯이 실제로 문제되지 않습니다. 속도는 그래도. 전체 개발 트리를 동기화하면 시간이 오래 걸릴 수 있습니다. 다시 통합하는데도 시간이 걸릴 것입니다. 트리의 분기 만 있으면 작업이 훨씬 빨라집니다.

이미 말했듯이 휴먼 에러가 발생할 수 있지만, 만약 당신이 브랜치 스펙을 만들면 잠재적 오류의 일부를 완화하는 데 도움이 될 수 있습니다.

3

동기화 속도와 클라이언트 디스크 공간은 전체 브랜치 (서버에서의 지연 복사는 네트워크 및 클라이언트가 아닌 지연 지원) 작성시 발생하는 문제입니다. 그러나 스파 스 (sparse) 지점을 만들려고 시도하는 것보다 설정하고 이해하는 것이 더 쉽다는 것을 알게되었으므로, 전체 지점은 결국 우리가 사용하게되었습니다.

+0

클라이언트 디스크 공간에 좋은 점. 내 기계에 TB의 공간이 있기 때문에 그것을 지적하는 것을 잊어 버렸지 만, 대부분의 경우 여전히 유효합니다. – Fostah

3

많은 모듈로 구성된 복잡한 제품이있는 경우 스파 스 분기가 적합한 좋은 상황이 있습니다. 빌드가 전체 시스템에 오랜 시간이 걸리며, 동기화가 너무 오래 걸리는 경우도 있습니다 (많은 데이터 파일). 그러나 개발은 전체 소스 기반의 작은 부분 집합 만 수정해야합니다. 모듈 또는 2 개, 아마도 일부 연결 코드가 "상위 수준"일 수 있습니다.

이 경우 스파 스 분기를 수행하는 것이 좋습니다. 즉, 이미 대량의 파일과 동기화되어 있고 이미 구축 된 것일 수도 있습니다. 그러나 수정하는 모든 파일이 먼저 분지되어 있어야합니다. 그렇지 않으면 메인 라인을 손상시킬 위험이 있습니다. 확실히 프로그래머가 더 많은주의를 기울여야합니다.

스파 스 분기가 분지 개발을 수행하는 유일한 방법 일 수있는 또 다른 경우는 개발 컴퓨터에서 둘 이상의 앱 버전을 보유하기가 어렵다는 것입니다. 이 경우에는 메인 라인 빌드와 개발 빌드를 나란히두고 나란히 실행하는 것이 까다로울 수 있습니다. 분명히 이상적은 아니지만, 일부 제품은 필연적으로나 역사에 의해 그러한 것입니다.