2010-01-28 106 views
6

情況如下:我們有一個巨大的svn倉庫,這是一個「主」(不能改變它,因爲它實際上是由另一家公司「擁有」)。我們更喜歡在git中本地工作,以獲得git提供的分支靈活性和速度。但我們不想克隆整個存儲庫。如何使用「子項目」的分支創建一個git克隆?

的倉庫結構看起來大致是這樣的:

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

我只PROJECT1感興趣,但我想有兩個枝幹(標籤是不是那麼重要,但它會是不錯的也得到他們)。

我能夠得到這些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 defs,「baddir」被提取。 – Spencer 2010-02-23 16:21:36