2009-09-20 69 views
5

我是Mercurial的新手,我開始意識到的是,我的基本工作流可能不是最有效的工作方式,因爲我經常執行提交以及功能改進這麼小,以至於當我需要找到一些先前的步驟來恢復時,這是非常困難的。請在Mercurial中建議一個更好的工作流程

下面是我在Mercurial中設置項目並完成第一次提交後的工作。

  1. 進行一些更改一個文件,並得到它的狀態下,一個小的改進工作
  2. hg commit -m "improvement A works"
  3. 進行一些更改相同的文件,並得到它的狀態下,下一次要改進加工。
  4. hg commit -m "improvement B works"
  5. 檢查是否所有小改進合計一個小功能工作正常。
  6. hg commit -m "feature A works"

如果我發現在「改善」時,我打開歷史(與Netbeans的水銀可視化插件)和複製並粘貼一些代碼回到我的當前版本和一個錯誤從那裏重新開始。

這似乎不是一個好的系統 - 我會很感激任何建議。

回答

10

我同意喬恩說分支機構是解決方案,但我會爲功能創建分支,而不是構成功能的各個改進。然後,工作流模式是這樣的:

  1. 的特點A.創建分支
  2. 改進一部完整的作品並提交。
  3. 完成改進工作B和承諾。
  4. 當功能似乎正在工作時,將功能A分支合併回主幹。

如果您發現有A的改進錯誤,而不是從頭開始,您可以切換到特徵分支並執行以下操作:

  1. 修復改善並提交。
  2. 將功能分支合併回主幹。
+0

las3jrock:謝謝。爲什麼你推薦功能分支而不是功能內的改進? – uzo 2009-09-20 20:12:25

+0

我推薦分支的功能,而不是構成每個功能的個別改進,因爲這使得分支在存儲庫(其包含項目的整個修訂歷史)和個體提交(它們是修訂記錄)。在此工作流程中,相關的提交在分支中組合在一起。在Jon描述的工作流程中,似乎每個分支只包含一個提交,在這種情況下,分支和提交是修訂歷史的同一單元的冗餘表示。 – las3rjock 2009-09-21 01:56:31

+0

不,不,我不打算暗示你會用一個分支進行一次提交 - 這會很荒唐:)。這只是爲了指定一個工作單元 - 一個改進可能是在Web表單或錯誤修復中增加一個新的字段,或者是一個主要的項目本身,您需要確定您希望的粒度去工作...... – Jon 2009-09-21 02:02:21

7

您可以將改進的更改隔離爲維護穩定主幹的分支。
看看Branch wiki page

工作流模式是:

  1. 改進創建分支爲改善A A
  2. 完成工作,並籤
  3. 測試的變化和合併到主幹,如果成功
  4. 創建改進乙支路
  5. 完成改進工作B和簽入
  6. 測試更改併合並回幹線if成功

如果您發現一個錯誤,您可以放棄分支(或在合併回中繼之前更正分支中的錯誤)。

4

我不同意分支機構的做法。如果不需要並行開發,爲什麼增加分支的複雜性?小的「檢查點」提交沒有任何問題。標籤可以用來指向重要的提交,這可能會更清楚。