2012-10-17 59 views
0

好吧,我已經嘗試尋找具體的東西,但沒有拿出任何東西。如何推動錯誤修復與Mercurial

如果我正在使用默認分支中的新功能,並且以前的工作引入了錯誤報告,那麼處理修復和推送的最佳方法是什麼?我正在嘗試書籤,但後來我看到它也推動了祖先。這是我在做什麼...

  • 對未來變更默認分支工作(修訂版76)
  • 切換到bug修復在中間編碼
  • 汞書籤主(當前工作)
  • 汞書籤-r 76 fix1(對於一些bug)
  • 汞柱更新fix1
  • 砍砍上現在修訂版77
  • 汞柱提交-m 'bug修復'
  • 汞柱更新主要
  • 汞柱推-B fix1

,這時候我注意到,76也上去。

因爲我不想要新的未完成的工作,只是修復了錯誤,那麼最好的方法是什麼?克隆bug?

謝謝。

+0

使用分支刪除書籤.. 。或克隆...以及清理工作流程的描述 - 您在「默認分支中的<某個未來的變更集」中工作,是嗎?並且必須在編碼中切換到錯誤修正,是的? –

回答

1

您正在將fix1書籤設置爲與主書籤相同的變更集,而不是首先更新到所需的變更集的修復錯誤的位置。推送時,可以使用-r參數定義要推送的修訂版本。這隻會推送指定修訂版本的分支和祖先(本例中帶有修復的分支)。

試着這麼做:

  • 上默認分支工作,爲未來的變更(修訂版76)
  • 切換到錯誤修正編碼的中間。錯誤是在變更集50
  • hg bookmark main
  • hg update -r 50
  • hg bookmark fix1
  • 黑客破解上現在修訂版77,以修正錯誤
  • hg commit -m 'bug fix part 1'
  • 黑客破解上現在修訂版78,以修正錯誤
  • hg commit -m 'bug fix part 2'
  • hg push -rfix1
  • hg update main
  • 帶上你的bug修復在代碼的主線再次
  • hg merge fix1
  • 如果你想
  • hg bookmark -d fix1
  • 工作在你的新功能再次
+0

謝謝澄清!幫助。 – dbinott

+0

這被稱爲'daggy'修復,因爲它利用了變更集彼此之間的DAG(有向無環圖)關係。更多信息請訪問http://mercurial.selenic.com/wiki/DaggyFixes - 同樣,您不必找到導入錯誤的確切變更集。您可以在知道該錯誤存在的變更集之上實施修補程序,例如1.0。 – Yawar