2014-01-20 3 views
0

내 프로젝트는 svn을 사용하며 이전에 git을 사용했다. 나는 꽤 많은 시간 동안 git-svn을 사용하여 많은 성공을 거두었 다. 그러나 이제는 새로운 고용주에게 몇 가지 문제가 있습니다.git-svn 브랜칭이 같은 레벨에있는 모든 서브 모듈

SVN의 레이아웃입니다 : 내가 체크 아웃

http://path/to 
      /trunk/ 
        submodule1 
        submodule2 

      /branches/ 
         branch1 
            submodule1 
         branch2 
            submodule1 
            submodule2 

내 자식 - svn을 (내가 갈 수있는 올바른 방법이라고 생각) 각 서브 모듈을 추적 할 수 있습니다.

  git svn clone http://path/to/trunk/submodule1 
      git svn clone http://path/to/trunk/submodule2 

트렁크를 제공하지만 각 분기를 추적하는 방법을 알 수는 없습니다. 나는 - 프리 픽스가 나를 도울 것이라고 생각하고 싶다. 나는 그렇게 생각하지 않는다.

누구든지 아이디어가 있습니까?

답변

1

레이아웃 사양에서 와일드 카드를 사용하여이를 수행 할 수 있어야합니다. 나는. submodule1 당신은

git svn clone --trunk=trunk/submodule1 
       --branches=branches/*/submodule1 \ 
       --tags=tags/*/submodule1 \ 
     http://path/to 

(당신은 또한 같은 패턴 다음과 같은 태그를 가지고 가정을) 할 것입니다. 다른 서브 모듈에 대해서도 같은 과정을 반복하십시오.

--prefix 옵션은 이와 관련이 없습니다. 단지 결과 저장소에 분기가 명명되는 방식을 제어합니다. 이 옵션을 선택하지 않으면 모든 지점이 직접 refs/remotes/아래로 이동합니다. 일반적인 원격 지점 레이아웃과 비슷한 것을 원한다면 예를 들어 다음을 사용할 수 있습니다. 당신이 후행 필요하므로

git svn clone --prefix=svn/ ... 

refs/remotes/svn/trunk, refs/remotes/svn/branch1 등 값은 결과 지점 이름을 그대로 앞에 추가됩니다 얻을 수/또는 당신은 refs/remotes/svntrunk

+0

감사 카슨 같은 것을하게 될 겁니다. http : // path/to/trunk/submodule1/trunk/submodule을 수행하려고했기 때문에 경로를 "http : // path/to /"로 변경해야했습니다. 나는 이것을 대답으로 생각하고있다. 그리고 --prefix에 대한 나의 이해를 명확히 해준 것에 감사드립니다. – MikeHoss

+1

아, 죄송합니다. 그것은 c & p 버그였습니다. 나는 대답으로 그것을 고쳤다. – Carsten