IT TIP

Mercurial에서 저장소의 하위 폴더를 어떻게 복제합니까?

itqueen 2020. 12. 1. 20:18
반응형

Mercurial에서 저장소의 하위 폴더를 어떻게 복제합니까?


몇 가지 관련 프로젝트가 포함 된 Mercurial 저장소가 있습니다. 이 프로젝트 중 하나만 분기하여 다른 곳에서 작업하고 싶습니다.

복제는 리포지토리의 일부일 뿐이며 이것이이를 달성하는 올바른 방법입니까?


원하는 것은 좁은 또는 부분적인 클론 이지만 안타깝게도 아직 지원되지 않습니다.

이미 큰 저장소가 있고이를 여러 개의 작은 저장소로 분할하는 것이 합리적이라는 것을 알고 있다면 convert 확장사용하여 Mercurial에서 Mercurial로 변환 할 수 있습니다 . 참고이가 만드는 새로운 저장소를 foo하고 사이 / 풀을 밀어 수 없습니다 your-big-repofoo.

convert extension그래서 당신의 repo의에 다음을 추가 기본적으로 사용할 수 없습니다 hgrc파일 또는 mercurial.ini파일 :

[extensions]
hgext.convert=

그런 다음 생성 map.txt과 파일을

include "libs/foo"
rename "libs/foo" .

(Windows에서도 슬래시를 사용할 수 있음)

$ hg convert --filemap map.txt your-big-repo foo

그러면 foo에서 libs/foo폴더 의 전체 내역이있는 저장소 가 만들어 집니다 your-big-repo.

모든 증거를 삭제하려면 디렉토리를 제거 하는 사용 하는 다른 변환 foo을 수행 your-big-repo할 수 있습니다 exclude libs/foo.

이와 같은 저장소가 여러 개 있고이를 전체적으로 사용하려면 하위 저장소를 살펴 봐야 합니다. 이 기능을 사용하면 svn:externals작업 방식과 유사하게 체크 아웃에 다른 리포지토리를 포함 할 수 있습니다 . 해당 위키 페이지 권장 사항따르십시오 .


부분 복제를 수행하는 대신 Convert Extension사용하여 하위 저장소별로 저장소를 둘 이상의 저장소로 분할 할 수 있습니다 .

특히 Mercurial 에서 변환 섹션을 참조하십시오 .

Mercurial 저장소를 필터링하여 기존 저장소의 하위 집합을 가져 오는 것도 유용합니다. 예를 들어 저장소 foo의 하위 디렉토리 subfoo를 자체 수명이있는 저장소로 변환하려면 (전체 기록을 유지하면서) 다음을 수행합니다.

$ echo include subfoo > /tmp/myfilemap
$ echo rename subfoo . >> /tmp/myfilemap
$ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo

나는이 문제를 우연히 발견하고 그것을 할 수있는 한 가지 방법을 찾았습니다 : 심볼릭 링크 사용 (불행히도 Linux 만)

예를 들어 /project저장소 에만 필요한 경우 컴퓨터에서 다른 폴더의 저장소를 복제 한 다음 ln -s /repo/location/ project. Mercurial이 처리합니다.


불가능 hg clone하며 전체 저장소를 복제합니다.

필요에 맞는 리포지토리 내부에 리포지토리를 포함 할 수있는 하위 리포지토리 확장을 살펴볼 수 있습니다.


(Late 2016) Mainline Mercurial은 여전히 ​​"좁은 클론"을 지원하지 않지만 다른 방식으로 문제를 해결하는 타사 확장 기능이 있습니다.

좁은 체크 아웃 (일명 "스파 스 체크 아웃"또는 "파일 경로 별 부분 체크 아웃") 만 처리 할 수 ​​있다면 hg-experimental 저장소 ( 디렉토리 내부를 살펴봄) sparse.py에서 Facebook의 확장 기능을 사용할 수 있습니다. 이 시나리오에서는 여전히 전체 기록을 복제하지만 (따라서 .hg 디렉터리가 더 작지 않음) 작업 디렉터리는 전체 저장소의 하위 집합에서만 표시 / 동작합니다.hgext3rd/

또는 Google은 좁은 복제 (일명 "파일 경로 별 부분 복제") 를 수행 하는 NarrowHG 확장만들었습니다 . 서버, 클라이언트를 제어하고 실험적 기능을 사용할 의향이 있어야하지만 실제로는 .hg에있는 클론의 복사 된 기록을 원래 저장소에 있던 하위 집합으로 제한합니다.

(2019) sparse확장은 실험 sparse확장 으로 Mercurial 4.3에 병합되었습니다 . NarrowHG 확장은 의욕 4.6로 합병 은 AS hgext.narrow확장.


이것은 Convert 확장으로 간단합니다 .

참고 URL : https://stackoverflow.com/questions/920355/how-do-i-clone-a-sub-folder-of-a-repository-in-mercurial

반응형