2011-03-02 2 views
0

나는 많은 svn 경험이 없지만 나는 자식과 함께 일하는 데 익숙하다.git-svn을 사용하여 svn 분기를 git 분기에 통합하는 방법은 무엇입니까?

다음과 같은 svn 저장소 구조 및 개정판이 있습니다.

https://server/svn/solution/trunk/solution.sln @ R100
https://server/svn/solution/trunk/project1/project1.csproj @ R150
https://server/svn/solution/trunk/project2/project2.csproj @ r160

https://server/svn/solution/branches/solution.sln @ R100
https://server/svn/solution/branches/project1/project1.csproj @ R200
https://server/svn/solution/branches/project2/project2.csproj 내가 저장소

01,235을 복제하는 경우 R350

@ 16,

자식 svn의 복제 https://server/svn/solution 내가 다에게 얻을

--stdlayout 난 원격 하나

(master)$ git checkout -b local-project1 project1 

내가 얻을 모든 로컬 브랜치를 만들려면

(master)$ git branch -a 
* master 
    remotes/project1 
    remotes/project2 
    remotes/trunk 

내가 체크 아웃 할 때 지점은 project1입니다.

(local-project1)$ git checkout master 
Switched to branch 'master'. 
(master)$ git branch local-project1 -D 
Deleted branch local-project1 (was 1111a11). 
(master)$ git checkout -b local-project1 
Switched to new branch 'local-project1'. 
(local-project1)$ pwd 
/c/workingcopies/solution 
(local-project1)$ cd project1 
(local-project1)$ pwd 
/c/workingcopies/solution/project1 
(local-project1)$ git branch --set-upstream local-project1 remotes/project1 
Branch local-project1 set up to track local ref refs/remotes/project1. 
(local-project1)$ git svn fetch 
(local-project1)$ git reset --hard ae8e9b1a ;# go to last commit of the remote branch 

을 페치 저장소에있는 지점에서 마지막 버전을 가져옵니다 분기는 내가 수행하면 시도 문제를 해결하기 위해 R100

@

https://server/svn/solution/branches/solution.sln에서 아무것도 포함되어 있지 않습니다 HEAD는 마지막 커밋으로 설정되지만 여전히 프로젝트 1을 솔루션이 아니라 지점에서만 가져옵니다. 모든 조언과 도움을 주시면 감사하겠습니다.

답변

1

문제는 표준 svn 레이아웃이 없다는 것입니다. 표준 레이아웃은 각 브랜치에 대해 브랜치 아래에 디렉토리를 가지고 있습니다.

repo/ 
    +-- trunk 
    |  +-- solution.sin 
    |  +-- project1/project1.csproj 
    |  +-- project2/project2.csproj 
    +-- branches/ 
     +-- branch01/ 
       +-- solution.sin 
       +-- project1/project1.csproj 
       +-- project2/project2.csproj 

트렁크와 동일한 디렉토리에 "branches"라는 트렁크와 브랜치가 있습니다.

git이 제대로 처리 할 수 ​​있는지 확실하지 않습니다. 몇 가지 아이디어가 있습니다. .git/config를 편집하여 최상위 디렉토리에있는 브랜치를 찾도록 설정할 수 있지만 이미 트렁크가있는 동안 trunk라는 브랜치를 만들려고 할 때 혼란 스러울 수 있습니다.

+0

나는이 접근법을 시도하고 다른 자식 오류 메시지로 인해 실패합니다. – mrt181

+0

어떤 접근 방식입니까? svn을 재구성하거나, git을 속여 지사가 정상보다 높은 디렉토리를 찾도록 속일 수 있습니까? – AFoglia

+0

git를 속일 수 있습니다. svn repo는 표준을 따르지 않습니다. 가까운 장래에 repo가 ​​이동하고 동료가 repo를 재구성합니다. – mrt181