2013-05-16 29 views
6

我測試SubGit作爲從SVN遷移到Git的一種方式。SubGit:如何排除分支?

我想要做的是能夠在git倉庫中創建遠程分支,所有用戶都可以使用該分支,不會將同步回SVN。

我只希望SubGit跟蹤主分支並將其同步回SVN,以便我們可以自由使用和共享其他Git分支。

有沒有簡單的方法來做到這一點?

謝謝

回答

7

理想的解決方案將被指定幹線:裁判/頭/主映射SubGit configuration,所以SubGit將與忽略任何其他分支同步樹幹

不幸的是,SubGit目前至少需要一個分支映射(版本1.0.x和2.0.x)。也就是說,一個人必須指定這樣的東西:

trunk = trunk:refs/heads/master 
branches = branches/*:refs/heads/* 
shelves = shelves/*:refs/shelves/* 
tags = tags/*:refs/tags/* 

既然你不會同步所有的Git分支,可以考慮使用一些特殊的命名空間要解決這個問題:

trunk = trunk:refs/heads/master 
branches = branches/*:refs/gitsvn/heads/* 
... 

所以,如果將主人分支推送到中央Git存儲庫,則會將其轉換爲中繼。但是,如果推分支foo,SubGit會忽略該分支,因爲refs/heads/foo不在同步範圍內。

的煩惱來自於合併提交:如果提交一個是合併分支的結果,然後SubGit相應承諾A.如果你願意的父母創造分支/富上顛覆側寧可不包括SubGit產生分支成*分支/ **命名空間,可以考慮使用Subversion的側一些特殊的分支,以及:

trunk = trunk:refs/heads/master 
branches = gitsvn/branches/*:refs/gitsvn/heads/* 
shelves = shelves/*:refs/shelves/* 
tags = gitsvn/tags/*:refs/gitsvn/tags/* 

在這種情況下犯了應送交gitsvn /分支相同的父/ foo分支。

這是目前可用的最佳解決方案。我們還爲2.1版提供了一項功能要求,可爲您提供理想的解決方案,但在實施它之前還需要一段時間。

更新上SubGit 3.0:

由於3.0版。0(目前早期訪問階段,下載在http://subgit.com/eap)SubGit支持單支佈局,所以配置文件可能如下所示:

  1. 沒有樹幹,沒有分支,沒有標籤和沒有架子:

    [svn] 
        url = http://host.com/repos/project 
    

    在這種情況下,項目目錄直接映射到master分支在Git倉庫中; SubGit忽略任何其他分支,從不創建貨架,這意味着匿名Git分支不會同步到SVN。

  2. 單幹,沒有架子:

    [svn] 
        url = http://host.com/repos/project 
        trunk = trunk:refs/heads/master 
    

    在這種情況下,項目/主幹目錄映射到分支在Git倉庫; SubGit忽略任何其他分支並且從不創建貨架。

  3. 與貨架單幹線:

    [svn] 
        url = http://host.com/repos/project 
        trunk = trunk:refs/heads/master 
        shelves = shelves/*:refs/shelves/* 
    

    在這種情況下,項目/主幹目錄映射到分支在Git倉庫; SubGit忽略任何其他分支,但它默認將版本1.0.x和2.0.x的匿名分支轉換爲貨架。

希望有所幫助。

+0

謝謝你的回覆。在此期間,我一直在玩弄它,並想出了將所有僅用於git的分支(如foo)放入單獨的遠程裸倉庫,然後在必要時將foo合併到主數據中,然後將其重新放入同步存儲庫 –

+0

上述「理想解決方案」如何發展?我打開了一個[新問題](http://stackoverflow.com/questions/22377071/subgit-avoid-to-synchronize-git-branches-onto-svn)與此相關,因爲我希望有git分支反映到svn。謝謝 – ThanksForAllTheFish

+0

它仍在工作中。這樣的佈局完全支持svn-to-git方向,但在將Git轉換爲SVN修訂版時,我們必須處理某些邊緣情況。無論如何,此功能目前是我們優先列表中的首位。 – vadishev