2014-03-13 63 views
3

我想使用SubGit但我面臨着樹枝一個問題:我想的Git下創建的生活和只有死路里的Git分支。我發現這一點:SubGit: How to exclude branches?,但它說Subgit:避免的Git分支同步到SVN

的煩惱來自於合併提交:如果提交一個是合併分支富成主的結果,然後SubGit相應犯的父母創建分支/富上顛覆側...。如果你寧願不包括SubGit產生分支到分支/ *命名空間中,可以考慮使用一些特殊的樹枝上顛覆端以及

我不想惹SVN,因爲我評估Subgit和我不想在SVN上更改任何內容。我想在推送到Git存儲庫之前,我可以通過rebasing達到我的目標(意思是向SVN提交合並歷史記錄,而不是git分支),但是恐怕這會在提交回SVN時導致衝突。任何想法,我可以如何解決這個問題,而無需等待SubGit 2.1版本(聲稱做我想做的事,但不會在不久的將來 - 來自鏈接的答案:it's going to take some time before we implement it)?

回答

5

SubGit只同步您在SubGit配置文件中指定的分支機構。默認情況下它們是:

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

因此,如果您使用其他名稱空間,例如refs/heads/nosync/*,其中的分支將不會同步。

或者你可以使用裁判/頭/ *正常分支(即不同步),並設置特殊裁判/頭/同步/ *命名空間同步:

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

注意,即長分支名稱(比如refs/heads/sync/master)並不會帶來不便,因爲在克隆這樣的Git倉庫之後,可以爲自己的本地refs/heads/*分支指定短名稱,以從一個或另一個名稱空間跟蹤具有長名稱的分支。這就是爲什麼我認爲這對你來說是一個很好的解決方案。

+0

其實,我昨天嘗試這種解決方案(反映我已經找到了一個),發現合併的提交是沒有問題的,這意味着它們不會導致subgit到'特別支部namespace'同步到SVN。所以,這絕對是我正在尋找的解決方案。謝謝! – ThanksForAllTheFish

+0

也許我錯過了一些東西,但在你的示例代碼塊中,不應該在那裏有'nosync'而不是'sync'嗎? –

+0

該塊是正確的,'refs/heads/*'沒有被提及,所以它們不同步; 'refs/heads/sync/*'被提及,所以它們是同步的。 –