2010-01-28 1 views
6

상황은 다음과 같습니다. 우리는 "마스터"인 거대한 svn 저장소를 가지고 있습니다 (다른 회사에서 실제로 "소유"했기 때문에 이것을 변경할 수 없습니다). 우리는 git에서 로컬로 작업하여 git가 제공하는 분기 유연성과 속도를 얻는 것을 선호합니다. 그러나 우리는 전체 저장소를 복제하고 싶지 않습니다."서브 프로젝트"의 가지를 사용하여 git clone을 만드는 방법은 무엇입니까?

는 저장소 구조는 다음과 같이 대략 같습니다

/trunk/project1/* 
     /project2/* 
/branches/branch/project1/* 
       /project2/* 
/tags/tag1/tag1a/project1/* 
      /tag1b/project1/* 
    /tag2/tag2a/project2/* 

내가 프로젝트 1에만 관심이 있어요,하지만 난 줄기와 가지 (태그 그렇게 중요하지 않습니다, 그러나에 좋은 것 모두 가지고 싶습니다 그들을 얻으십시오).

나는이 SVN - 원격 설정으로 복제 된 단일 지점 얻을 수 있어요 :

[svn-remote "svn"] 
    url = https://svn.company.com/svn/branches/branch1/project1 

을하지만 난 정말 너무, 분기 구조를 싶어.

[svn-remote "svn"] 
    ignore-paths=^project2|^project3|... 

하지만 무시-경로를 정말 지속 가능하지 않은 새로운 최상위 "프로젝트"디렉토리가 추가 될 때마다 업데이트 할 것입니다 : 나는 무시-경로를 사용하는 방법에 대한 생각.

둘째,/tags/tag1에 태그 만 있으면됩니다 (태그가 필요한 경우). 그 일을하는 방법에 대한 생각은 인정 될 것입니다.

답변

6

나는 당신의 .git/config 파일에 다음 일을해야한다고 생각 :

[svn-remote "svn"] 
    url = https://svn.company.com/svn 
    trunk = trunk/project1:refs/remotes/svn/trunk 
    tags = tags/*/project1:refs/remotes/svn/tags/* 
    branches = branches/*/project1:refs/remotes/svn/branches/* 

내가 일을했던 configuration section of the git-svn manpage

+0

예에 기반. 하나의 이상한 점은 내가 한 지점을 체크 아웃 할 때 작동했던 제외 경로가 여기에서 작동하지 않는 것 같습니다. 내가 가지고있다 url = https://svn.company.com/svn/branches/branch1/project1 ignore-paths =^baddir/ 그리고 "baddir"은 svn에서 가져 오지 않았다. 동일한 무시 경로지만 위의 svn-remote def를 사용하면 "baddir"을 가져옵니다. – Spencer