2012-09-10 123 views
2

你如何找到hg移植的實際日期?在9月7日,幾個文件被移植用命令:Mercurial日誌問題

hg transplant -b <branch> --log abcdefg 

在9月10日,該命令hg log --date "2012-09-07 to 2012-09-10"正在運行。但是,這不會顯示移植文件的變更集,因爲該日期具有八月份的父承諾日期。

我該如何做一個日誌範圍的分支上的hg日誌(或其他東西),以顯示我的移植?

回答

2

在這一點上你運氣不好。這是transplant不是任何工作流程的標準部分的原因之一。它(和git cherry-pick)適用於當有人在錯誤分支中做了一些工作,但它們在正常使用情況下不應該是必需的。 merge命令是從一個分支到另一個分支進行更改的首選方式 - 如果您始終在修復歷史中的最早時間修復錯誤,那麼hg merge應該是一種安全的方法,可以將它們帶入任何分支沒有帶來任何其他變化。 2010年Joel的軟件/窯路演視頻包含了一個很好的解釋,爲什麼選擇正確的父母進行修復會使merge永遠是更好的選擇。

不太好,因爲merge但仍高於transplant越好graft命令,如果你想覆蓋你移動變更之日起,這需要--currentdate說法。

0

我不認爲你可以。一旦變更集被提交,你就不能回去改變任何事情。它看起來像transplant保留/使用原始變更集時間戳。

您可以使用extras模板字段來顯示/查找存儲庫中的所有移植。我相信對於移植的變更集,extras中將有source鍵/值對與原始變更集的變更集ID。

$ hg log --template '{extras}' 

然後,您可以將該輸出傳遞給grep以獲取移植。