2012-01-27 2 views
3

을 밀어 때 의욕이 [서브 패스] 포함하는 절대 경로가 주요 REPO의 기본 경로에 추가됩니다 :Windows에서 의욕 2.0.2 실행

내 .hgrc에서

:

[subpaths] 
MYREPOS/(.*) = https://server/repos/\1 

그리고 내 .hgsub에서 :

내가 푸시을 수행 할 때
subrepo/lib = MYREPOS/lib 

는 서브 REPO의 푸시 경로는 그것의 연결이 아니라 절대 경로보다, 주요 REPO 경로의 인 - 출력은 다음과 같습니다

pushing to https://server/repos/main 
pushing subrepo subrepo\lib to https://server/repos/main/http%3A//server/repos/lib 
내가 기대 한 것

다음 '절대 또는 relativeness'하위 REPO 경로가 오른쪽 .hgsub의 경로와하지가 매핑되는 값에 의해 결정되기 때문에이

pushing to https://server/repos/main 
pushing subrepo subrepo\lib to https://server/repos/lib 

인가? 예를 들어, MYREPOS/lib는 상대 경로이므로 맵핑 된 경로는 상대 경로로 처리됩니다.

답변

3

하위 저장소 논리가 between 1.9 and 2.0으로 변경되었습니다. 절차는 지금 : .hgsub에서 상대 경로 인 경우

  1. , 다음 주 저장소 경로로 가입
  2. , 우리는 것이 변경 전에 마지막 경로

에 규칙을 매핑 적용 다시 매핑 된 경로가 relati 경우

  1. .hgsub
  2. 에서 경로에 규칙을 다시 매핑 적용 그런 다음 기본 저장소 경로와 연결하십시오.

그렇기 때문에 첫 번째 단계에서는 MYREPOS/lib이 상대 경로로 간주됩니다. 따라서 하위 리포지토리의 전체 경로는

https://server/repos/main/MYREPOS/lib 

이며 재 매핑 패턴은 계속 트리거됩니다. 이는 푸시 URL 중간에 http://...이 표시되는 이유를 설명합니다. 그러나 이전 동작으로 되돌아가는 대체물 이 있습니다. 당신의 패턴이

^MYREPOS/(.*) = https://server/repos/\1 

을 경우 그것은 늘 새로운 2 단계에서 아무것도 일치 - 그것은 단지 경로의 시작 부분에 MYREPOS을 다시 매핑합니다. 우리는 이것을 알고 오래된 알고리즘을 사용합니다!