Mercurial에서 두 프로젝트를 결합하는 방법은 무엇입니까?


84

두 개의 수은 저장소가 있습니다. 이 시점에서 두 프로젝트를 동시에 작업하고 싶기 때문에 그들이 "하나가된다"는 것이 의미가 있습니다.

두 프로젝트가 각각 새 저장소의 하위 디렉터리가되기를 바랍니다.

  1. 두 프로젝트를 어떻게 병합합니까?
  2. 좋은 생각인가요, 아니면 따로 보관해야하나요?

한 리포지토리에서 다른 리포지토리로 푸시 할 수 있어야하는 것 같습니다 ... 어쩌면이게 정말 간단할까요?

답변:


69

이 방법으로 두 개의 저장소를 결합 할 수있었습니다.

  1. hg clone first_repository저장소 중 하나를 복제하는 데 사용 합니다.
  2. hg pull -f other_repository다른 저장소에서 코드를 가져 오는 데 사용 합니다.

-f풀 의 (force) 플래그가 핵심입니다. 두 저장소가 동일한 소스에서 가져온 것이 아니라는 사실을 무시하라는 메시지가 표시됩니다.

이 기능에 대한 문서 는 다음과 같습니다 .


1
두 번째 저장소의 커밋 해시 키도 보존됩니까? (난 안 추측에는 요,하지만 당신은 병합 할 때까지 확인 될 수 있습니다.)
Macke

6
이 작품은,하지만 당신은 또한 실행해야합니다 hg merge마지막으로 모든 것을 작동 얻을에
팩터 미스틱

7
@Marcus Lindblom : 변경 집합을 당기는 것은 결코 것 이제까지 의 해시를 변경합니다. hg glog이 작업을 수행 한 후 살펴보면 관련되지 않은 두 줄의 변경 집합이 있음을 알 수 있습니다. 각 줄의 첫 번째 변경 집합에는 부모가 없지만 Mercurial에서는 문제가되지 않습니다. 일단 당겨서 각 행에 대해 하나의 새 변경 세트를 만들고 hg mv적절한 하위 폴더에 모든 것을 넣은 다음 행을 병합하면 모든 설정이 완료됩니다.
Steve Losh

1
두 저장소에 두 저장소에 공통된 코드가 있으면 어떻게 될까요? 병합에 의해 자동으로 처리됩니까? 그리고 병합에 관해서는 $ hg merge?
kamal

2
참고 용으로, 다음은이 프로세스에 대한 문서입니다. mercurial.selenic.com/wiki/MergingUnrelatedRepositories
Gent

7

hg는 1.3 (2009-07-01) 이후 하위 저장소 를 갖기 시작했습니다 . 초기 버전은 불완전하고 불안정했지만 이제는 꽤 유용합니다.


2
하위 리포지토리가 함께 작업하는 데 어려움이 있음을 발견했습니다. 그들은 작동하지만, 당신은 그들이 행동하도록하기 위해 몇 가지 농구를 뛰어 넘어야하며, 조심하지 않으면 많은 두통의 원인이 될 수 있습니다.
Pete Duncanson


3

프로젝트 전체에서 동일한 코드를 사용하지 않는 경우 별도로 유지하십시오. 당신은 설정할 수 있습니다 당신 떨어져 단지 디렉토리로 해당 프로젝트의 각각의 개인 저장소를. 필요하지 않을 때 모든 분기, 병합 및 커밋을 혼합하는 이유.

편집 정보 : 한 저장소에서 다른 저장소로 푸시. 언제든지 transplant명령을 사용할 수 있습니다 . 이 모든 것이 실제로 두 가지를 결합 하려는 욕구 를 뒷받침하는 것이므로 내 제안을 사용하면 불편할 수 있습니다. 그런 다음 포리스트 확장 또는 다른 것을 사용할 수 있습니다.

hg transplant -s REPOSITORY lower_rev:high_rev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.