我是新來的汞。我有一個功能正在工作,但現在不是。我想逐步恢復更改,直到我到達修訂版本的位置。我不太確定要做到這一點的最佳方法是什麼。Hg:如何逐步走過變化?
我試圖將repo克隆到舊版本,並看到它在那裏工作。那麼...現在我該如何更新後續更改?在克隆的回購中,default
和tip
版本是我克隆它的。
我需要應用補丁嗎?貨架改變了嗎?我不太確定。
我是新來的汞。我有一個功能正在工作,但現在不是。我想逐步恢復更改,直到我到達修訂版本的位置。我不太確定要做到這一點的最佳方法是什麼。Hg:如何逐步走過變化?
我試圖將repo克隆到舊版本,並看到它在那裏工作。那麼...現在我該如何更新後續更改?在克隆的回購中,default
和tip
版本是我克隆它的。
我需要應用補丁嗎?貨架改變了嗎?我不太確定。
您應該使用bisect
command快速確定您的功能何時停止工作。其工作原理如下:
你開始通過重置平分狀態,並通過標記您的當前工作目錄的父版本一樣糟糕:
hg bisect --reset
hg bisect --bad
現在做一個關於當你認爲該功能正在猜測。如果你認爲這是工作在6月1日,那麼你可以做
hg update -d '<Jun 1'
的update
command是你用什麼來更新工作目錄,以匹配給定的變更。有關日期格式的列表,請參閱hg help dates
。現在,您應該測試這個版本,如果該功能在這裏工作,那麼你將其標記爲好:
hg bisect --good
如果功能在此變更工作,然後將其標記爲壞,甚至進一步更新了過去:
hg bisect --bad
hg update -d '<May 1'
重複此操作,直到找到一個良好的修訂。當你找到一個很好的修訂版時,Mercurial可以開始幫助你:好的和不好的更改集之間的變更集必須包含錯誤。 Mercurial將通過跟蹤候選變更集列表來幫助您,並幫助您將列表縮小到單個變更集。它通過將您更新爲大致位於候選人中間的變更集並要求您測試此變更集來實現此目的。
經過測試,您將變更集標記爲好或不好。如果你把它標記爲好,那麼你知道這個錯誤在將來會更進一步,如果你把它標記爲壞,那麼這個錯誤就會在過去進一步發展。在任何一種情況下,您都會在每個步驟中削減約半數候選人!這意味着您只需要10個步驟來測試1024個候選人 - 這就是對數的力量:-) Mercurial會跟蹤候選人並在每次測試後將您更新到新的位置。
一個完整的會話可能看起來像這樣(我只是說好/壞隨機這裏):
% hg bisect --reset % hg bisect --bad % hg update -r -100 61 files updated, 0 files merged, 9 files removed, 0 files unresolved % hg bisect --good Testing changeset 11414:0fa4474bdc2f (99 changesets remaining, ~6 tests) 46 files updated, 0 files merged, 0 files removed, 0 files unresolved % hg bisect --good Testing changeset 11439:778377be3662 (50 changesets remaining, ~5 tests) 17 files updated, 0 files merged, 0 files removed, 0 files unresolved % hg bisect --bad Testing changeset 11428:4d03c3680400 (25 changesets remaining, ~4 tests) 6 files updated, 0 files merged, 0 files removed, 0 files unresolved % hg bisect --bad Testing changeset 11420:a99ef3711890 (13 changesets remaining, ~3 tests) 3 files updated, 0 files merged, 0 files removed, 0 files unresolved % hg bisect --bad Testing changeset 11417:6f1d1ed3e19a (6 changesets remaining, ~2 tests) 4 files updated, 0 files merged, 0 files removed, 0 files unresolved % hg bisect --good Testing changeset 11418:67bb9d78f05e (3 changesets remaining, ~1 tests) 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % hg bisect --bad The first bad revision is: changeset: 11418:67bb9d78f05e user: Matt Mackall date: Mon Jun 21 13:25:42 2010 -0500 summary: merge: sort arguments to stabilize the ancestor search
要找到功能缺失的版本,您可以嘗試hg bisect
。 你可以找到它here。
tip
回購協議中的最新版本,default
分支的名稱,默認情況下在您創建回購協議時使用。您可以通過拉動它們來添加剩餘的變更集(變更)。
hg help pull
這工作得很好。現在,如果我想退步,我該怎麼辦? – 2010-07-01 06:44:24
看起來像我可以「更新」修改向前和向後。 – 2010-07-01 07:03:17