2011-03-02 116 views
0

我没有太多的svn经验,但我习惯使用git。如何使用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 @ R350

当我克隆库

混帐svn的克隆https://server/svn/solution --stdlayout

我得到的一切

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

当我想创建一个本地分行远程一个

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

我得到当我检查分支是project1。分支不包含

https://server/svn/solution/branches/solution.sln任何@ R100

为了解决我尝试了以下问题:

(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 

的获取从分支在仓库中获取最后修改并且HEAD被设置为最后一次提交,但我仍然只在分支中获得project1,而不是解决方案。任何建议和帮助表示赞赏。

回答

1

问题是你没有标准的svn布局。标准布局将在每个分支的分支下有目录,就像这样。

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

您改为拥有一个trunk和一个名为“branches”的分支,它位于与trunk相同的目录中。

我不确定是否可以让git正确处理这个问题。我有一些想法:你可以编辑.git/config来让git在最上面的目录中寻找一个分支,但是当它试图建立一个名为trunk的分支而它已经有一个中继时它可能会感到困惑。

+0

我试过这种方法,并且由于不同的git错误信息而失败 – mrt181 2011-03-03 10:21:45

+0

哪种方法?重新组织svn,或者欺骗git,寻找高于正常分支的目录? – AFoglia 2011-03-03 19:34:58

+0

欺骗git。 svn回购并不符合标准。回购将在不久的将来提出,我的同事将重新组织回购。 – mrt181 2011-03-04 08:25:45