2010-03-02 100 views
24

我正在嘗試使用Hg以擺脫SVN,但希望瞭解如何構建我的Hg存儲庫。我來自一個SVN背景(可能的污染我的前景如何這應該工作!)和我的倉庫目前看起來是這樣的:爲SVN用戶推薦的Mercurial存儲庫/文件夾結構

Project1 
    trunk 
    branches 
    1.0 
    1.1 
Project2 
    trunk 

等,這似乎是「傳統」的方式來構造一個SVN存儲庫。

我應該如何重現這與Hg?爲了使這一點變得更加有趣,我喜歡'stable','qa'和'dev'存儲庫/文件夾的想法,並且希望在可能的情況下介紹這一點。

我是一個汞初學者,所以任何幫助或建議是值得歡迎的。

回答

26

有一個Subversion(SVN)和Mercurial(HG)庫,或回購短期之間存在一些結構上的差異,意味着你將如何 「設計」 您的層次結構:

  • Mercurial每個存儲庫只有一個項目效果更好:因爲您始終必須克隆整個存儲庫,因此在單個存儲庫中擁有多個項目可能會對克隆時間以及推/拉操作產生重大影響,例如你必須同步所有在其他項目上完成的工作,而不是你的工作每一次。
  • SVN沒有標籤/分支的「強」概念,而Mercurial做的是:在SVN中(寫作時),每個分支,每個標籤基本上都是給定項目/文件夾/隨你。建議的trunk/branches/tags結構可以幫助您找回「副本」,不再需要。另一方面,分支和標籤在mercurial中有明確的定義。標籤實際上是一個名稱,可以放在特定的修訂版本上,並且您可以要求提供所有現有的標籤。對於分支機構,您會看到有MANY ways可以處理它們,但是最適合SVN哲學的那個分支機構就是分支機構。

考慮到這一點,並與你穩定,質量保證(QA)和發展(開發)過程的想法偶合吧,這裏是我會建議:

  • 一個存儲庫命名爲「穩定「每個項目。每個項目有幾個「QA」回購和每個項目有大量「開發」。
  • 標籤和名稱分支僅由「穩定」回購定義,或最終由「質量保證」定義。 「開發」回購可以以不同的方式處理它們,而不會造成傷害。
  • 您從未推動過一個「質量保證」或「穩定」回購,或者他們整合了捆綁或補丁,並且每個人都有一個負責人。

實施例:MyProject的-1.0

[STABLE Repository, pulls from any/all QA] 
    - MyProject-1.0 

[QA Repositories, branched from STABLE, pulls from any/all DEV ] 
    - QA_MyProject-001 (Person A) 
    - QA_MyProject-002 (Person B) 
    - QA_MyProject-003 (Person C) 
      ... 
    - QA_MyProject-### (Person #) 

[DEV Repositories, branched from STABLE or QA] 
    - DEV_MyProject-001 (Feature X) 
    - DEV_MyProject-002 (Feature Y) 
    - DEV_MyProject-003 (Feature Z) 
      ... 
    - DEV_MyProject-### (Feature #) 

    1. DEV completes feature(s) 
    2. QA pulls feature(s) from DEV 
    3. STABLE pulls from all approved QA(s) (consolidating all changes) 
9

Mercurial是有據可查的。你只需要知道在Wiki中去哪裏看。

你可以看一下水銀的wiki文章RepositoryNaming找到某些答案。

你也應該閱讀官方水銀手冊:Mercurial: The Definitive Guide

祝你好運!

19

但你這樣做之前 - 檢查了這一點:hginit.com - 這是一個半小時的閱讀,它有SVN用戶的部分。

更讓我有很多聰明,我決定放棄上/主幹/標籤結構,並以不同的方式使用水銀。我現在有一個每個項目的存儲庫,只包含項目的結構,並使用mercurial標籤命令來標記我。

.Jesper豪格

+0

我喜歡每個項目的一個單獨的存儲庫的想法。 – Rob

相關問題