도서관 B와 C는 내가 라이브러리 B를 사용하는 프로젝트 D를 시작하려면 내가 할 않는 어떤 프로젝트 (A)의 하위 디렉토리이어야합니다하지만 모든 프로젝트 A의 제휴 달리 하지?
모든 프로젝트는 동시에 다른 프로젝트의 하위 리포지토리로 모두 및 존재할 수 있습니다. 워크 플로를 제안하여 설명하겠습니다. 모든
첫째, 각 프로젝트의 (A, B, C)은 어딘가에 게시 된 축복 저장소가 있어야합니다
당신은 자신의 서버에 hgwebdir를 실행하거나 사용을 만들 수 Bitbucket 또는 Kiln과 같은 Mercurial 호스팅 서비스. 이렇게하면 개발자는 변경 사항을 가져 오거나 푸시 할 수있는 중심적인 권한을 얻게되며 백업 할 항목이 생깁니다.
이제이 저장소의 클론이 두 가지 방법으로 작업 할 수 있습니다 :
직접 프로젝트를 복제. 예를 들어 : hg clone http://bitbucket.org/LachlanG/LibraryB C:\Lib\LibraryB
및/또는 을 다음과 같은 내용으로 ProjectA
의 루트에 .hgsub
파일을 넣어 subrepository 정의을 만듭니다
libraries/libraryB = http://bitbucket.org/LachlanG/LibraryB
libraries/libraryC = http://bitbucket.org/LachlanG/LibraryC
이 subrepository 정의는 의욕에게 그 프로젝트 A가 복제 될 때마다 라이브러리 B와 라이브러리 C의 클론을 libraries
폴더에 넣어야합니다.
프로젝트 A에서 작업하고 커밋하는 경우 libraries/LibraryB
및 libraries/LibraryC
의 변경 사항도 커밋됩니다. Mercurial은 .hgsubstate
파일의 Project A에서 사용중인 라이브러리 버전을 기록합니다. 그 결과, 지난 주에 어떻게 작동했는지 확인하기 위해 이전 버전의 프로젝트에 hg update
을 입력하면 해당 버전의 라이브러리가 제공됩니다. 태그를 만들 필요조차 없습니다 :-)
hg push
프로젝트 A가 축복받은 저장소로 변경되면 Mercurial은 하위 저장소의 변경 사항을 먼저 자신의 원본으로 푸시해야합니다. 그렇게하면 게시되지 않은 라이브러리 변경에 의존하는 프로젝트 변경 사항을 우연히 게시하지 않습니다.
모든 것을 로컬로 유지하려는 경우에도 하위 저장소 정의에서 URL 대신 상대 경로를 사용하여이 워크 플로를 계속 사용할 수 있습니다.
여기서 문장의 끝에 언급 한 라이브러리 폴더는 "이 하위 저장소 정의는 projectA가 복제 될 때마다 라이브러리 폴더에 LibraryB 및 LibraryC의 복제본을 넣어야한다는 것을 인정합니다." – LachlanG
그것의 단지 폴더, 라이브러리의 왼쪽 부분 : library/libraryB = http://bitbucket.org/LachlanG/LibraryB 오른쪽에서 복제본은 –
@ LachlanG이어야합니다 : ProjectA의 루트에 나타납니다 예를 들어 'C : \ Dev \ ProjectA \ libraries \'와 같이 복제 할 수 있습니다. –