2011-08-02 52 views
3

我想檢查使用git-svn的Boost庫,並且我只想檢出從版本1.35開始的中繼和標籤,即標籤/ release/Boost_1_35及更高版本。我的配置是這樣的:如何git svn只獲取具有特定模式的分支/標籤?

[svn-remote "svn"] 
    ignore-paths = ^tags/release/(?i:(?!boost)|[^/]*(?:beta|rc)|boost_(?:0|1_[1-2]|1_3[0-4]))[^/]*/ 
    url = https://svn.boost.org/svn/boost 
    fetch = trunk:refs/remotes/svn/trunk 
    tags = tags/release/*:refs/remotes/svn/tags/* 

然而,git的取指仍取萬噸無關標籤例如svn /標籤/ version_0-9-10或svn /標籤/ version_0-9-10 @ 44215的。我想知道指定忽略路徑來實現這種效果的正確方法是什麼。

順便說一句:我讀過How do I fetch/clone only a few branches using git-svn?,但聽起來不是一個可擴展的解決方案。

+0

[我對相關問題的回答](http://stackoverflow.com/questions/6933748/how-do-git-svn-ignore-paths-work-ignoring-daily-build-tags/6937445#6937445)可能也適用於你。 – MatrixFrog

+0

@MatrixFrog謝謝。我認爲它與我所提到的非常相似,因爲boost是一個非常大的存儲庫,所以它不具有可擴展性。我還擔心新分支出現時,會再次通過所有svn歷史?如果是的話,那麼它不適用於增強庫,因爲它通常需要幾天時間才能使用git檢出完整的boost庫。 –

+0

是的,這是一個很好的觀點。如果有大量標籤,您可能希望將其保留一晚,可能不止一次。或者,有人可能已經完成了工作並將其發佈到某個地方,因此您可以克隆他們的git repo。事實上,谷歌「助推混帳」 - 看起來發生了。 – MatrixFrog

回答

0

我已成功地爲某些部門這樣做,但由於SVN標籤實際上是樹枝它也許應該是相同的:

後用「-t標籤和-b分支」混帳svn的初始化我已經編輯的.git /配置爲:

[svn-remote "svn"] 
     ... url, fetch and stuff ... 
     branches = branches/rel-2.1/*:refs/remotes/svn/branches/rel-2.1/* 
     branches = branches/rel-2.2/*:refs/remotes/svn/branches/rel-2.2/* 
     branches = branches/rel-2.3/*:refs/remotes/svn/branches/rel-2.3/* 
     branches = branches/rel-2.4/*:refs/remotes/svn/branches/rel-2.4/* 
     branches = branches/rel-2.5/*:refs/remotes/svn/branches/rel-2.5/* 

我用一個簡單的Python代碼生成相關線和複製它的.git /配置:

for x in range(1,6): 
    print branches = "  branches/rel-2.{0}/*:refs/remotes/svn/branches/rel-2.{0}/*".format(x) 

不作爲可擴展爲正則表達式,但THA這是我能找到的最好的。

+0

按照上面的方式,它將獲取所有分支的排除方式,因爲我擁有20個以上的分支,3個排除 – virendrao

相關問題