2014-01-28 2 views
-3

하위 리포지토리, 하위 모듈에 대해 알고 있다고 생각하는 모든 것을 잊어 버리십시오. 내 문제는 매우 간단합니다.중첩 된 .hg 폴더 커밋

내가 하나의 파일이 저장소, repoOne 및 repoTwo의 repoTwo

내용입니다 있습니다 repoOne의 DefaultConfig.txt

내용입니다 :

+ repoOne 
     + folderA 
      +folderB 
        +repoTwo 
         +.hg 
         +DefaultConfig.txt 

좋아, 지금은 만들 DefaultConfig.txtrepoOne 범위 만 변경됩니다. 나는 재미를 위해 형제 파일을 그 옆에 추가했다.

변경 내용을 repoOne에 대해서만 적용하고 싶습니다.

즉, repoTwo는 이러한 변경 사항에 대해 알 필요가 없지만 repoOne이 repoTwo에서 끌어 오기를 선택하면 업데이트를 계속 받으려고합니다. 또한 그렇게하기로 선택하면 해당 폴더 내부에서 해당 파일을 커밋 할 수 있습니다.

왜 이것이 가능하지 않습니까? 왜 수은이 .hg 파일을 커밋하지 않습니까? 그렇지 않으면 너무 멋질 것입니다! 다른 버전 제어 시스템이 처음부터 이렇게 어떤 것을 지원합니까?

GIT도이 정확한 문제로 고통 받고 있습니다. Whyyyyy !?

+2

Mercurial은 .hg 디렉토리를 검색하여 어떤 repo가 ​​있는지 찾아냅니다. 처음에는'repoTwo/.hg'를 찾았으므로 그것이 그것이 있다고 생각하는 repo입니다. 왜 .hg 파일을 커밋하고 싶습니까? 그것은 극히 비표준입니다. –

+2

이것은 submodules 등이 * 할 일이 * 무엇입니까. 왜 그걸 사용하고 싶지 않아? – Chris

+0

@StephenRasku 네,하지만 내부에서 보냈다면 그때 두 번 다시 할 수 있습니다. – momomo

답변

1

나는 당신이 무엇을 하려는지 이해할 수는 없지만 거의 모든 명령 행에서 저장소 루트 디렉토리를 지정하는 것처럼 보인다. hg 명령 : 당신은 최후의 수단의 기능을 고려 SubRepositories로 이동하기로 결정하지 않는 한 아주 쉽게 혼동 될 것으로

cd repoTwo 
hg -R ../../.. add DefaultConfig.txt 
hg -R ../../.. commit -m "Whyyyyy would I do this!?" 

그러나, 나는, 당신이 설명하고있는 구조에 대해 조언한다.


업데이트는 :이 파일이 중첩의 repo에보고로이 실제로 작동하지 않습니다, 그것으로 연주 데.

파일을 상위에 추가 한 후 중첩 된 저장소에 파일을 추가하려고 시도하면 파일이 상위 저장소에서 "제거됨"으로 표시됩니다.

한 가지 가능한 솔루션은 하나 개의 중첩 된 저장소에있는 문제의 파일이 있고, 또 다른 중첩 된 저장소에 복제하는 것입니다 :

이 같은
+ parentRepo 
    + .hg 
    + nestedOne 
    + .hg 
    + DefaultConfig.txt 
    + nestedTwo : cloned from nestedOne 
    + .hg 
    + DefaultConfig.txt 

뭔가 당신이 DefaultConfig.txt의 두 가지 버전을 가질 수 있음을 의미하고 하나를 변경하면 pushpull을 사용하여 다른 사람에게 전달할 수 있습니다. 그게 네가 원하는대로 할 지 모르겠지만, 내가 얻을 수있는 가장 가까운 곳이야. 지저분 해.

"왜 이것이 가능하지 않습니까?"라고 대답 할 수있는 몇 가지 이유가 있습니다.하지만 IMO의 주된 장점은 요청한 것과 같은 것이 필요할 경우 문제가있을 수 있습니다. 워크 플로우를 통해 혼란을 야기 할 수 있습니다.

+0

흠 .. 가상 버추얼 subrepos 물건에 의해 나는 꽤 혼란스러워 ... 당신이 질문에 대한 나의 마지막 코멘트를 보면 그것은 내가 달성하려고하는 것을 거의 설명하고있다. – momomo

관련 문제