2011-03-07 53 views
7

我們剛剛從顛覆轉換到mercurial,有一件事比預期佔用更多的時間;合併頭。如何自動合併2個頭與mercurial

我們喜歡它保持合併獨立於2次提交(與顛覆相比),但我們最終定期合併2個頭以進行無關的更改。

簡單情況。 我和鮑勃都是最新的。 我們都有最新的默認(aka main)分支,並在不同的文件中進行改進。

我們承諾,只有一個能夠推送到中央服務器,另一個將創建2個頭。然後,拉,選擇2個頭,合併(它會很容易,因爲在不同的文件上進行更改)。提交,然後推送。

因此,有沒有做這些步驟 嘗試合併 如果沒有衝突 提交 其他 取消合併

我們希望能有一個自動化的服務器上運行此擴展,因此它+1這是命令行和另一個+1(如果它可以在不觸及工作副本的情況下執行合併)。

謝謝!


更新:
最後我們做了幾個Python腳本來管理的最常見任務(合併上&建設;合併2頭)。

感謝您的幫助!

回答

3

這聽起來像你應該能夠使用hg fetch爲此。它將從服務器中提取更改,合併,然後自動提交合並。它也會提示合併衝突。它包含在Mercurial中,所以只需將

fetch = 

添加到您的hgrc中,並且您應該全部設置。它不會自動推動,但這通常是一個壞主意。在將代碼推送給其他人之前,通常需要運行測試並解決任何合併問題。

+1

FWIW Mercurial的作者Matt認爲抓取是一個非常糟糕的主意:http://www.selenic.com/pipermail/mercurial/2009-June/026320.html – 2011-03-07 04:44:25

+0

@ Ry4an - 可能,但您可以自動切換父母通過您的hgrc(http://www.selenic.com/pipermail/mercurial/2009-June/026324.html)。 Fetch可以節省大量的擊鍵次數,並且對於團隊成員彼此緊密合作的簡單存儲庫來說效果很好。 – derekerdmann 2011-03-07 05:21:05

+1

- 開關 - 父母與什麼有關?不建議馬特不要取回,因爲他不知道switch-parent(他可能寫了它)。他推薦反對,因爲他認爲這是一個普遍的錯誤特徵。他談到完全棄用/刪除它,但擔心已經太遲了。這是一個壞主意。 – 2011-03-07 05:43:03

3

合併是否真的需要那麼多時間?如果他們是「無關的變化」,它不是隻是眨眼嗎?

有人已經建議fetch和其他人可能會建議rebase,但我個人認爲合併編碼,並希望它是手動。它幾乎沒有時間,這是一個給出諸如「通過我的FooBar工作中途拉動Jane的工作」(而不是提取的無用提交消息)的良好信息的機會。

+1

我們正在嘗試自動執行許多常見任務,並且在腳本運行的過程中,兩個頭將會很常見。我們可以讓系統停下來等待兩個頭的合併,但我們寧願不要。 – Babouchk 2011-03-21 19:52:28

+1

合併**是**編碼,如果沒有人工介入,兩者都不應自動提交。 – 2011-03-22 02:53:56