2012-02-24 2 views
5

나는 종종 내 실제 작업 환경에 로컬로 그냥 다시 복제 한 후 내 상류 클론의 지역 상점을 유지, 그리고에 의해 의욕 작업 :Subrepos를 다시 당기지 않고 로컬 복제본을 만드는 방법은 무엇입니까?

$ cd /clones 
$ hg clone ssh://external-repo.example.com/some/repo/path/foo 
$ cd ~/Development 
$ hg clone /clones/foo 

나는 종종 새로운 클론을 만들고 싶어하기 때문에이 나를 ​​위해 특히 유용하다 비행기 타기 등 인터넷에 접속할 수 없습니다. 그러나 원래 복제본에 하위 복제본이 포함되어있는 경우에는이 작업이 수행되지 않습니다. 즉 .hgsubstate 파일의 존재는 이 로컬 복제 복제본 (항상 인 경우에도 임에도 불구하고)을 가져 오는 대신 인터넷에 항상 출현한다는 것을 의미합니다. 로컬 복제본이 인터넷에 접속하지 않고도 파일을 복사 할 수있는 방법이 있습니까?

This question

아마 일하는 것이 대답을 가지고 있지만, 장기적인 관리 ( /clones/에서 복제에 .hgsubstate 파일을 삭제 한 후 그에서 지역 클론을) 매우 불행한 것 같다.

답변

5

는이처럼 .hgsub 파일에 "사소한"subrepository 경로를 사용할 수 있습니다

foo = foo 
bar = bar 

이는 recommended setup입니다. 레이아웃을 설정하면 복제본의 복제본을과 동일한 구조 ()로 복제 할 수 있다는 장점이 있습니다. 따라서 비행기에있을 때 클론을 복제 할 수 있습니다.

또는 [subpaths] 설정을 사용하여 URL을 로컬 경로에 다시 매핑 할 수 있습니다. 이것은 당신이 당신 ~/.hgrc 파일에

[subpaths] 
http://server/(.*) = /clones/libs/\1 

을 추가 한 다음 당신은 당신이 복제 할 때 경로가 /clones/libs에 매핑되는 것을 볼 수 있습니다.

+0

감사합니다. 이것은 정확히 내가 원하는 것입니다. 기존의 모든 리포지토리를 "사소한"것으로 바꾸기는 너무 어려울 수 있지만, 새 것으로 사용할 것입니다. 고맙게도, 하위 경로는 기존 경로에 대한 내 문제를 해결합니다. –

1

하위 리포지토리를 직접 복제하면됩니다.

$ cd ~/Development 
$ hg clone -U /clones/foo 
$ hg clone -U /clones/foo/bar foo/bar 
$ hg update -R foo 

이 업데이트는 subrepository이 존재하고 마스터 업데이트에 필요한 변경 집합을 포함하고 있기 때문에 인터넷에 액세스 할 필요가 없습니다 : 그 foo는 가정하면 것은 하나의 subrepo라는 바있다.

관련 문제