[PATCH] mergetools.hgrc: Make merge tool selection deterministic by using unique priorities

Mads Kiilerich mads at kiilerich.com
Sat Jun 20 10:13:33 CDT 2009


# HG changeset patch
# User Mads Kiilerich <mads at kiilerich.com>
# Date 1245510804 -7200
# Node ID 853e1b35b5c1bc5baa3dde61ce23b07309d57e66
# Parent  cee3b19036caaa4cbc5e81071ace0da95bb848b5
mergetools.hgrc: Make merge tool selection deterministic by using unique priorities

Merge tools are chosen by priority, but in case of tools with same priority
there is no well-defined order. If no priority is specified then it is 0.

This patch gives all merge tools in mergetools.hgrc a unique priority smaller
than 0 (so that new tools without explicit priority will get higher priority).

The assigned priorities are based on existing values and ordering and how
common and usable I think they are, trying to make as few changes as possible.
This might change the behaviour in some cases, but mostly in cases where the
behaviour wasn't guaranteed anyway.

(Next step will be to reorder the entries to make it more readable ...)

diff --git a/contrib/mergetools.hgrc b/contrib/mergetools.hgrc
--- a/contrib/mergetools.hgrc
+++ b/contrib/mergetools.hgrc
@@ -6,6 +6,7 @@
 kdiff3.regappend=\kdiff3.exe
 kdiff3.fixeol=True
 kdiff3.gui=True
+kdiff3.priority=-1
 
 gvimdiff.args=--nofork -d -g -O $local $other $base
 gvimdiff.regkey=Software\Vim\GVim
@@ -16,8 +17,10 @@
 merge.priority=-10
 
 gpyfm.gui=True
+gpyfm.priority=-3
 
 meld.gui=True
+meld.priority=-2
 
 tkdiff.args=$local $other -a $base -o $output
 tkdiff.gui=True
@@ -25,11 +28,12 @@
 
 xxdiff.args=--show-merged-pane --exit-with-merge-status --title1 local --title2 base --title3 other --merged-filename $output --merge $local $base $other
 xxdiff.gui=True
-xxdiff.priority=-8
+xxdiff.priority=-7
 
 diffmerge.args=--nosplash --merge --title1=base --title2=local --title3=other $base $local $other
 diffmerge.checkchanged=True
 diffmerge.gui=True
+diffmerge.priority=-11
 
 p4merge.args=$base $local $other $output
 p4merge.regkey=Software\Perforce\Environment
@@ -42,22 +46,27 @@
 tortoisemerge.regkey=Software\TortoiseSVN
 tortoisemerge.checkchanged=True
 tortoisemerge.gui=True
+tortoisemerge.priority=-6
 
 ecmerge.args=$base $local $other --mode=merge3 --title0=base --title1=local --title2=other --to=$output
 ecmerge.regkey=Software\Elli\xc3\xa9 Computing\Merge
 ecmerge.gui=True
+ecmerge.priority=-13
 
 filemerge.executable=/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge
 filemerge.args=-left $other -right $local -ancestor $base -merge $output
 filemerge.gui=True
+filemerge.priority=-12
 
 beyondcompare3.args=$local $other $base $output /ro /lefttitle=local /centertitle=base /righttitle=other /automerge /reviewconflicts /solo
 beyondcompare3.regkey=Software\Scooter Software\Beyond Compare 3
 beyondcompare3.regname=ExePath
 beyondcompare3.gui=True
+beyondcompare3.priority=-4
 
 winmerge.args=/e /u /dl local /dr other /wr $local $other $output
 winmerge.regkey=Software\Thingamahoochie\WinMerge
 winmerge.regname=Executable
 winmerge.checkchanged=True
 winmerge.gui=True
+winmerge.priority=-5


More information about the Mercurial-devel mailing list