2011-08-04 7 views
3

직장에서 나는 svn 리포 지 토리를 7 명 중 공유합니다.hg 클론은 hg (init → pull)와 같습니다.

내 실수를 괴롭히지 않고 모두를위한 빌드를 위반하지 않고 svn에서 분기를 피하려면 현재 svn 디렉토리에 hg 리포지토리가 만들어져 있습니다.

제가 일할 때 hg에 로컬 커밋을 수행합니다. 가상 컴퓨터에서이 모든 설정을했기 때문에 개인화 된 중앙 위치로 내 hg 저장소를 밀어 넣기까지했습니다.

최근 내 가상 컴퓨터를 손상시킨 Mac OS X lion으로 마이그레이션되었으므로 다시 설정해야했습니다. 그래서 나는 내 svn trunk에서 프로젝트를 체크 아웃하고 지금 내가 작업하고 있던 디렉토리에 hg 변경 세트를 되돌리고 싶다.

  • $ hg clone <remote repo>
  • $ hg init && hg pull <remote repo>

이 동일합니다 :

나는 두 가지 옵션이 있습니다?

답변

13

유일한 차이점은 당신이 hg init && hg pull <remote>을 실행하면, 당신도해야한다 :

  1. 실행 hg update default을 작업 사본
  2. 수동 push에 대한 기본 경로를 설정
  3. pull
에게 체크 아웃

hg clone이 모든 것을 하나의 명령으로 수행합니다.

+0

+1 나를 때린다. ** :) ** - 그리고 Vaibhav는 아마'hg update --clean'을해야 할 것입니다. –

+0

감사합니다 !!!! hg clone의 기본 경로를 비활성화하는 방법을 찾고있었습니다. –

4

음, 그렇습니다.

내가 원격 저장소를 소스로 사용하고 있음을 나타내는 것으로 알고 있지만 질문의 제목이 약간 넓기 때문에 더 넓은 질문에 답하고 있습니다.

외관상으로 명백한 최종 결과는 동일합니다. 두 저장소의 파일은 바이너리 동일하지 않지만 (참고로, 나는 당신이 추적하는 파일에 대해 말하는 것이 아니라, Mercurial이 그 파일을 추적하기 위해 사용하는 "데이터베이스", 역사, changesets 등에 대해 말하고있다. . 모두 같다.

그런 점에서 그렇습니다. 그 두 가지는 똑같은 것을하는 것 같습니다.

그러나 그들은 다른 방식으로합니다.

이 할 경우

hg clone REMOTE_URL 
hg init && hg pull REMOTE_URL 

그런 다음 실제 차이가 없다합니다.당신이 할 경우

그러나 :

hg clone LOCAL_PATH 
hg init && hg pull LOCAL_PATH 

그런 다음 차이가있을 수 있습니다 (참고,이 클론/풀은 디스크에 이미 다른 저장소에서)입니다. 가능한 경우 로컬 클론이 저장소에 대한 하드 링크를 사용합니다. 즉, 저장소에있는 모든 파일의 새 복사본을 만들지 않고 디스크에 새 링크를 만들면 훨씬 빠르게 실행되고 거의 공간이 필요하지 않습니다.

그런 다음 기록 수정을 시작하면 즉, 새로운 변경 집합을 커밋하면 해당 파일이 필요에 따라 연결이 끊어지고 전체 복사본이 만들어집니다.

파일이 하드 링크를 만들지 않는 정확한 추론은 나에게 알려지지 않음에 유의하십시오. Mercurial wiki에서이 기능에 대한 자세한 내용을 볼 수 있습니다 (Hardlinked Clones).

당겨서는 안됩니다. 다른 저장소에서 읽고 대상 저장소에 새 파일을 작성/갱신합니다. 이렇게하려면 더 많은 시간과 디스크 공간이 필요합니다. 그래서

는 요약 :

  • hg clone LOCAL_PATH가 훨씬 적은 디스크 공간을 사용하고 복제하는 경우/원격 저장소에서 당겨, 아니오가 더 빨리 hg init && hg pull LOCAL_PATH
  • 보다 훨씬을 실행할 수 없습니다 실제 차이