2011-10-30 1 views
8

더 이상 존재하지 않는 subrepo/revision 쌍이있는 이전 브랜치로 업데이트하려고하면 Mercurial 저장소가 멈추게됩니다.Subrepo에서 누락 된 개정을 가리 키기 때문에 업데이트에 실패한 Mercurial Repo를 수정하는 방법은 무엇입니까?

abort: unknown revision '22e9bb6a6cd98be85b995f632b2f72d6298f9354'! 

Mercurial에 수정본이나 분기로 업데이트하지만 하위 보관함을 업데이트하지는 말하면 어떤 방법이 있습니까?

+0

고마워요. FWIW, 물어 본지 2 년 후에 패치 된 것 같습니다 : http://mercurial.808500.n3.nabble.com/PATCH-subrepo-check-phase-of-state-in-each-subrepositories-before-committing-td4005250 .html – weberc2

답변

6

서브 페어가 아직 다른 곳에 있습니까? [subpaths] 섹션을 사용하여 포인터를 변경할 수 있습니다.이 섹션은 .hgsub의 위치에 번역 레이어를 제공합니다.

정말 아무데도 존재하지 않는 경우와 같은 일부 깊은 마법 그럴 수는 너무 : 그것은 빈 .hgsub 파일이 제외하고는 REVISION_YOU_WANT처럼 새로운 버전을 만들어야합니다

hg debugsetparent REVISION_YOU_WANT 
cat /dev/null > .hgsub # put an empty .hgsub in place 
hg commit .hgsub 
hg update tip 
그래서 당신은 할 수 그것을 업데이트하십시오.

새로운 위치에서 서브repo를 찾아 하위 경로로 가리킬 수 있다면 훨씬 좋을 것입니다.

+0

다음 번에 푸시하거나 로컬에있을 때이 랙이 다른 레포지에 전파 될 것입니까? – Pol

+0

커밋하면 '밀어 넣기'에 전파됩니다. 당신이 행동하기 전에 그 복제품을 원하지 않는다면. 로컬 클론은 (거의) 즉각적이고 (거의) 디스크 공간을 차지하지 않으며, 실제로 시도해 보는 훌륭한 방법입니다. –

+2

다시 업데이트하려는 커밋이 명명 된 브랜치 (기본값이 아님)에있는 경우, hg debugsetparent 을 수행 한 후에 hg 브랜치 을 수행해야합니다. –