2010-11-18 83 views
2

問題是我希望能夠使用Mercurial或git作爲開發的前端,但是在Subversion中有更改和更新,通常是集成分支或僅由Mercurial的腳本或Hudson在注意到變化時寫入的內容。然後我們的Mercurial存儲庫會更新其他開發人員使用SVN所做的更改,我們會在提供新的開發版本之前將其更改並整合並進行測試更改等。Git/Mercurial與SVN交叉開發團隊的交叉

有誰知道下列情況是否可行開發團隊合併&分支?或者如果有更好的方法......除了強大的武裝人員只使用一種工具?

以下策略是由以下幾部分組成:

  • SVN
  • SVN與水銀
  • 水銀開發倉庫

在下面的配置

  • 1對1克隆,更新通常會從SVN/trunk中提取爲一個克隆(hgsubversion)。克隆將是隻讀的,並定期有一個腳本來改變。克隆將被克隆到一個可讀寫的開發庫中(這是一個普通的Mercurial Repo)。當開發人員將更改推送到此開發人員存儲庫時,駐留在Integration分支中的元素將被推送到SVN /集成分支中。該分支僅由自動化腳本承擔。如果其他使用svn的開發人員只將更改推送到SVN的主幹中,他們可以被拖入克隆並在Mercurial環境中合併。不利的一面是你會失去SVN級別的可見性,而這些級別的變化來自於此。

    [[[[ trunk [[[[[[[[[[[[[[[[[[[[[[[[ SVN ]]]]]]]]]]]] branch/integration ]]]]]]]]]]]]]]]]]] 
         |             ^
         |             | 
         |             | 
         v             | 
    SVN - Mercurial Clone          | 
         |             | 
         |             | 
         |             | 
         v             | 
    Mercurial - Development ---------------------------- Branch - Integration 
    
  • +0

    我應該提到,通過前端開發,我已經在使用hgsubversion,這對我來說很好。但我希望能夠利用基於團隊的分佈式開發。 – Gary 2010-11-18 16:13:14

    +1

    我個人喜歡這種強大的武裝方法:)而且Mercurial的用法和SVN非常相似。 – erjiang 2010-11-18 16:14:59

    回答

    3

    在使用DVCS的課程,這其實主要使用情況下,我解釋之一,而我覺得演出真棒DVCSes有多深的...

    你有幾種方法可以做到這一點。

    手動方式

    SVN /結帳的代碼,然後汞/初始化汞柱/提交一切。然後,你在Hg,上做你的工作,承擔小而頻繁的原子修改本地。當您想要提交SVN時,您首先需要對您在SVN /結帳後剛剛完成的Hg修訂版進行Hg/up。您SVN/up,由於您剛剛從純SVN修訂版更新,因此不會出現SVN衝突。您Hg /承諾,汞/合併然後SVN /承諾。如果有人已經同時承諾SVN,則重複上述操作:Hg/up到上一次清理的SVN修訂版,SVN/upHg/commit + merge

    你跟蹤最後一次SVN clean修訂的方式取決於你。您可以使用每次更改的標記,將SVN修訂保留在分支中或獨立的存儲庫中。TIMTOWTDI

    額外的好處:這也是作爲一個SVN提交者使用汞的人,沒有他們被外界版本控制的一種方式。

    自動方式

    我從來沒有使用過這種方式,但tailor是能夠做到SVN /汞柱轉換兩種方式,反覆進行。

    +1

    是的,我最終在從SVN到mercurial的過渡期間使用了這個過程。我基本上有一個分支用於任何剩餘的SVN更新。一旦每個人都安定下來,並且我們很樂意在mercurial環境中處理我們的測試轉換,我將最新的SVN更新與mercurial更改合併,並承諾在默認情況下宣佈新開發將開始。工作得很好。 – Gary 2012-04-20 15:59:16