2016-12-15 3 views
1

이 질문을 검색하는 방법을 모르겠습니다. 이미 질문을 받으면 안내해주십시오. 우리가 끌어과에 밀어 그Mercurial Repo Organization

우리의 현재의 repo 조직이 우리 각 (각 프로젝트에 대한) 우리 자신의 작업 저장소를 가지고있다 :

나는 변덕에 새로 온 우리는 우리의 현재의 repo 조직에 문제가 마스터 레포 (각 프로젝트에 대해서도).

문제는 우리 작업 리포지토리가 회사 서버 (마스터 레포와 함께)에 있고 서버의 작업 저장소에서 빌드하면 빌드 시간이 상당히 길어지고 있다는 것입니다 (즉 빌드 할 때 40-50 초 로컬 하드 드라이브에 약 1 초 소요).

확실한 해결책은 작업 리포지토리를 로컬 하드 드라이브로 옮기고 서버의 마스터 레포 (master repo)를 밀거나 당기는 것 같습니다.

한 가지 문제는 작업중인 Repo가 물리적으로 로컬 하드 디스크에 있고 회사 서버에 백업되지 않는다는 것입니다.

서버 측에 위치하는 "섀도우"작동 레포를 생성하는 방법이 있습니다 (우리의 로컬 하드 디스크에있는) 각각의 작업 리포지에 영구적으로 동기화 된 상태에서 푸시/풀 이 중 하나와 마스터 레포에서?

이 방법을 사용하면 우리 작업 리포지토리의 모든 데이터를 서버에 백업하는 것 외에도 빌드 시간을 단축 할 수 있습니다.

모든 입력/조언을 주셔서 감사, 숀

+0

확실한가요? 로컬 드라이브의 각 사용자의 작업 저장소에 대한 서버의 "섀도우"작동 저장소를 의미합니다. – Shaun

+0

mercurial이 중앙 집중화되지 않은 경우 "작업중 인"repo와 "마스터"레코드간에 차이가 없습니다. –

+0

나는 내가 이해할 수 없다는 것을 잘 모르겠다. 나는 수은을 처음 사용하고 repos를 설정하지 않았다. – Shaun

답변

0

(이 백업 될 수 있도록) 당신은 회사 서버에있는 저장소의 사본을 보관하고 컴파일 할 수 있습니다 (즉, 귀하의 로컬 드라이브에 복사 쉽게). 푸시/풀과 함께 복사본을 유지합니다.

+0

고맙습니다. 내 첫 생각이었습니다. 우리의 작업 담당자가 서버에 복제 된 상태로 유지하는 기능이었습니다. 우리는 로컬 드라이브와 서버간에 수동으로 데이터를 수동으로 동기화 할 필요가 없었습니다. – Shaun

1

일반적으로 리포지토리간에 커밋 된 변경 집합 만 교환 할 수 있습니다. 또한 그들은 최소한 단계 초안이어야합니다. 작업 디렉토리의 상태를 공유 할 수있는 방법은 없습니다.

자주 자주 사용하는 경우가 많습니다. 커밋 훅 (commit hook)을 통해 로컬 서버에서 로컬로 수행하는 모든 커밋을 쉽게 자동으로 푸시 할 수 있습니다.

또한 중앙 서버를 non-publishing server으로 설정하는 것이 좋습니다. 즉, 초안 단계에서 커밋을 푸시 할 수 있으며 그 단계에서 계속 변경되므로 변경 가능합니다. 그런 식으로 나중에 초안을 편집 할 수도 있습니다. 'done'이라고 생각하는 변경 집합에 대해 수동으로 공개 단계로 변경해야합니다. 수은의 changeset evolution extension이 유용 할 수도 있습니다.

+0

조언 해 주셔서 감사합니다. 생각해 볼만한 것을 주셨습니다. – Shaun