2011-04-27 75 views
1

我想使用git svn連接到我們公司的存儲庫。我們有一個非標準的分支目錄。如何使用git svn來訪問這個問題已經在之前討論過了,但是,我們似乎在我們的分支名稱中略有轉折,似乎讓我無法完成所有這些。使用git-svn訪問混合分支文件夾佈局

讓我們看一個例子svn的:

trunk/ 
tags/ 
branches/ 
    rootbranch/ 
    tku/subbranch 

我們有樹枝目錄的根一級分行。但是我們在嵌套文件夾中也有分支。標籤dir也是如此,但我認爲這只是同樣問題的第二個例子。

如果我使用混帳svn的克隆文件:/// tmp目錄/ gitsvn/svnrepo混帳克隆-s,我只得到了根樹枝,符合市場預期:

/tmp/gitsvn/git-clone$ git branch -r 
    rootbranch 
    tku 
    trunk 

但是,如果我用克隆_git SVN克隆文件:/// tmp目錄/ gitsvn/svnrepo混帳clone2 -b分支/ / _,我只得到了支行:

/tmp/gitsvn/git-clone2$ git branch -r 
    tku/subbranch 

有沒有辦法兼得?

回答

-1

對於任何絆倒這個的人來說:似乎兩者都不可能。 Subversion允許混合設置分支,但不鼓勵,因此git不支持這一點似乎沒有問題。我的解決方案是將所有分支都帶到同一層,然後忘掉問題並繼續前進。無論如何,只有一級分支似乎更好。

+0

從caedwa的解決方案工作,所以它似乎是可能的。 – 2013-02-04 13:23:20

3

可以通過向git-svn配置添加多個分支行來訪問其他分支。

的.git /配置文件,就會出現類似下面這樣的部分:

[svn-remote "svn"] 
    url = http://server/svn 
    fetch = trunk:refs/remotes/trunk 
    branches = branches/*:refs/remotes/branches/* 
    tags = tags/*:refs/remotes/tags/* 

只需添加爲分行的額外目錄另一項。例如:

branches = branches/tku/*:refs/remotes/branches/tku/* 

然後運行混帳SVN取從svn庫檢索分支。

我相信也可以在構建git倉庫時創建這個設置,對clone命令使用多個-b選項。

git svn clone http://svn.foo.org/project -T trunk -b branches -b branches/tku -t tags 
+0

git --version:git version 1.7.9.5這對我不起作用:我添加了branches = mobile/android/Android_Client/branches/developmentBranches/*:refs/remotes/developmentBranches/*到.git/config並刪除.git/svn/.metadata然後運行git svn fetch。沒有骰子:只有原始分支出現。 – 2012-12-18 14:28:30

+0

奇怪的是,我使用'devBranches'而不是完整的'developmentBranches'再次嘗試了這個子句的第二部分,它似乎更加快樂 - 而不是關於缺失版本的錯誤,它正在匆匆離開。 Straaange命名空間衝突? – 2012-12-18 15:40:11

+0

@ android.weasel我有同樣的問題,併爲我工作(版本1.7.9裏面的cygwin) – 2013-02-04 13:21:09