2014-02-26 39 views
0

據我所知,在tortoisehg合併計劃是這樣的如何強制工具的決心與tortoisehg合併

Mercurial的合併算法看起來像這樣(簡化):

  • 確定文件由每個分支修改,使用共同祖先作爲共享起始修訂版

  • 對於在一個分支上修改的每個文件,採用該修改後的版本

  • 爲這是在兩個分支修改的每個文件,執行文件合併

避免步驟3是一個相當簡單的事情。您可以輕鬆強制解決衝突的工具。

我的問題是,你如何避免步驟2?我想強制一個工具解決所有文件的變化。

真正令人討厭的部分是,大型和複雜的合併,追蹤所有自動更新的文件並不好玩。

+0

我很好奇你爲什麼想要這樣做。我沒有跟蹤文件的問題,我不知道如何避免步驟2會有所幫助。你能解釋你試圖達到的最終目標嗎? –

+0

@mo我希望合併是完全手動的。我想決定是否要改變。我不想在事實發現mercurial更新了它自己並驗證它們之後不得不返回。 – 8bitwide

回答

1

我希望我不會看到你的問題,但我仍然很難看到它的實際應用。

無論如何!我不確定用TortoiseHg或命令行mercurial(或甚至可能)這樣做的最佳方式,但通過diff工具和一些爭論,我管理了一些可能滿足您需求的東西。如果這是有用的,它將很容易自動化的一些爭論:)

我通常使用BeyondCompare,但它不支持3路文件夾比較(雖然見this post)。所以爲此我使用了KDiff(TortoiseHg)。

  1. 首先,右鍵單擊每個磁頭並導出>歸檔>文件目錄(選擇任意目標文件夾)。
  2. 接下來,對共同的祖先進行相同的操作(通過選擇變更集,右擊並選擇「轉到共同祖先」很容易完成)。
  3. 現在打開KDiff3並選擇上面創建的三個文件夾。 KDiff的輸出應該非常直觀地顯示在任一分支中不同的所有文件。
  4. 在執行上一步時檢查「合併」框(並提供第四個目的地目錄)將允許您手動合併所有內容。
  5. 將合併結果恢復爲新的mercurial變更集雖然很麻煩,但在概念上應該很簡單。

Sample output from KDiff3

我希望這適合你的目的。讓我知道你是否需要澄清!

0

由於我不使用hg,我在猜測這個。

也許你可以強制它通過使用: hg --config ui。interactive = yes

其次,如果這不起作用,您可以指定一個自定義合併工具,該工具對於單面更改具有不同的行爲。或者指定規則:internal:提示,以便始終詢問要執行的操作,並且可能會讓您有機會在接受更改之前進行區分。

Ref:http://www.selenic.com/mercurial/hg.1.html#id4

+0

我不知道配置選項,但我知道第二步由獨立於合併工具的mercurial執行。 – 8bitwide