2011-04-05 5 views
2

우리는이 webapp 제품을 여러 고객을 위해 배포하고 svn에서 mercurial로 전환하는 것에 대해 생각합니다. svn에서 우리는 트렁크를 프로젝트의 핵심으로보고 지점을 고객별로 설정합니다.Mercurial : 다중 고객 프로젝트를위한 저장소 레이아웃

이제 최상의 레포 레이아웃이 수은에 무엇이 있을지 궁금합니다.

프로젝트는 기본적으로 세 개의 주 폴더 (html, css, js)로 만들어집니다.

/html의 내용은 고객에게 동일하게 유지되지만 /css & /js에 사용자 정의가 있습니다.
현재 이러한 사용자 지정 내용은 skin.css과 같은 별도의 파일에 저장되므로 실제 용도별로 사용자 지정 내용을 수정/변경 내용에서 핵심/공통 파일로 명확하게 전달할 수 있습니다.

SVN을 사용하면 고객 지사의 변경 사항을 부분적으로 트렁크에 반영 할 수 있으므로 고객 프로젝트를 수행하는 동안 글로벌 문제를 수정할 수 있습니다. 내가 아는 바로는 부분 커밋은 현재 수은에 지원되지 않습니다.

그럼 어떻게하면 수은에서이 상황에 가장 잘 접근 할 수 있을까요? 우리는 하나의 중앙 코어 저장소 (릴리스 지점 포함)를 가지고 고객 프로젝트를 별도의 (원격) 저장소로 복제해야합니까? 고객 센터 : & 고객 센터 - 모든 리포 중 하나를 사용하는 것이 낫습니까?

모든 포인터에 대해 감사드립니다.

답변

4

프로젝트를 두 개의 repos : core (html) 및 customer (css, js)로 분할했습니다. "핵심"은 이해하기 쉽습니다. "고객"의 경우 일반 또는 대체 스타일 세트로 시작합니다. 그런 다음 각 고객을 위해 일반 스타일에서 복제본을 만듭니다. 한 고객을 위해 빌드를 작성하려면 코어와 해당 고객 복제를 모두 가져와야합니다. 이 방법은 다른 고객이 격리되어 있지만 여전히 일반적인 스타일을 통해 서로에 대해 알고 있습니다. 따라서 모든 고객을 가로 지르는 스타일을 변경하려는 경우 일반 스타일을 적용하고 각 고객이 끌어 올 수있게해야합니다. 나는 다른 고객을 완전히 다른 repos로 만들지 않을 것이다.

하나의 고객에 대해 복제본을 만들 때마다 하나의 단일 레포를 갖는 문제는 관련없는 부분 (html)을 소지하게됩니다. 그리고 예상치 못한 수정 사항은 쉽게 html로 유출 될 수 있습니다. 같은 이유로 SVN에서도 프로젝트가 두 개의 프로젝트로 분할되었을 것입니다.

+0

코어 및 고객으로부터 풀 (pull)이라고 말하면, 고객 별 리포지토리의 하위 리포지토리로 설정한다는 의미입니까? – Carsten

+0

@Carsten, 고객 A를위한 빌드를 만들 때마다 핵심 (html)과 A 스타일의 두 부분이 필요합니다. 어떻게 설정해야할까요? "고객 별 리포지토리의 서브 리포지토리"가 의미하는 바를 정확히 알지 못합니다. –

+0

죄송합니다. 조금 명확하지 않았습니다. 내가 맞으면 '고객 A'는 예를 들어 repo '고객'의 한 지점이 될 수도 있습니다. 이제 어떻게 코어 레포를 다루겠습니까? '핵심'체크 아웃 고객 repo에 Mecurial subrepo가 ​​있습니까? 아니면 코어 파일을 고객 작업 복사본으로 가져 오시겠습니까? – Carsten

관련 문제