2011-03-24 22 views
5

hg mq插件的目的是爲了能夠完美地提交你的倉庫,而不會混淆你在注意力不集中的ADHD中通過代碼引起的散亂問題所做的改變;如果修補程序隊列中的hg mq中的單個修補程序內發生太多更改,該怎麼辦?

例如....

我在錯誤X工作時,我發現的bug y和開始工作吧。此時,您應該在修補程序隊列中創建一個新修補程序,以便在將hg qfinish提交到您的存儲庫時不會混淆這些修改。

現在假設爲你忘記做新的補丁,在這個過程hg qrefresh一分鐘。然後稍後意識到您的錯誤,您希望將修改從一個修補程序分成兩個修補程序。

我意識到,它與隊列編輯補丁文件(和一個新的補丁文件)來分隔變爲獨立的補丁做,後來提交。不過,我還不擅長編輯diff補丁文件。

我在哪裏可以學習一下呢?一個人怎麼會這樣呢?

回答

0

我有一個shell別名,viq="vim $(hg root)/.hg/patches/",我使用的只是這些情況!

我跑viq拉上了補丁,然後手工編輯diff和移動帥哥到其他補丁合適。我喜歡這種交互方法(例如,git add -i),因爲我從交互式提示中感覺不到安全的工作,因爲我從我的編輯工作(我知道我的編輯製作備份,具有微不足道的撤消等等)。 )。

+0

我沒有在我的帖子中說清楚,但是,我知道補丁文件的位置,這只是我對編輯補丁文件的細節不太瞭解。 – leeand00 2011-03-24 17:03:30

+0

啊,對不起 - 我不是故意暗示你不知道他們在哪裏。我只是說,考慮到我所知道的所有選項,我就是這樣做的。 – 2011-03-24 17:10:09

+0

此外,只要您在[人羣級別](http://en.wikipedia.org/wiki/Diff#Unified_format)進行編輯,它就非常簡單 - 您可以隨意移動胖子,只需很長時間因爲正確的標題(即'--- a/foo \ n +++ b/foo')位於移動的hunk的上方。 – 2011-03-24 17:12:14

3

另一種選擇(假設它運行平臺)是TortoiseHG的2.0版本。名爲「不適當」的Shelve實用程序允許在補丁或工作目錄之間移動塊和文件。它適用於Windows,Linux和可能的OSX。

http://tortoisehg.bitbucket.io/

2

可以激活record extension,加入到.hgrc下面幾行:

[extensions] 
hgext.record = 

您可以

hg qrefresh nothing 

清除當前的補丁(請注意,「nothing 「只是一個隨機字符串:qrefresh的參數是必須包含在當前文件中的文件列表補丁,所以任何不是一個修改後的文件的名稱將會這樣做 - 我通常使用「0」)

現在與hg qrecord <patchName>您可以交互選擇哪些更改必須在新補丁中進行。剩下的更改可以通過qnew或另一個qrecord添加到另一個補丁。您最終可以使用qpopqfold或編輯.hg/patches/series來合併和重新排列補丁。

+0

這聽起來很有趣......我不得不看看那個。 *歡呼!* – leeand00 2011-05-18 04:32:53

+1

另外,如果自動補丁過於粗糙,'hg qcrefresh'(crecord擴展的一部分)允許您通過單個行選擇。 – 2012-09-10 13:46:23