Skip to contentSkip to conversation

Improvements to mergetool-lib

PATCH Superseded Sebastian Schuberth 2 participants 6 messages Jun 15, 2016 Documentation

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Improvements to mergetool-lib

This small series adds Beyond Compare 3 as a diff / merge tool and performs some minor improvements.

Sebastian Schuberth (3):
mergetool--lib: Sort tools alphabetically for easier lookup
mergetool--lib: Add Beyond Compare 3 as a tool
mergetool--lib: Add the proper executable name for ECMerge

 Documentation/git-difftool.txt         |    4 +-
 Documentation/git-mergetool.txt        |    4 +-
 Documentation/merge-config.txt         |    8 +-
 contrib/completion/git-completion.bash |    2 +-
 git-gui/lib/mergetool.tcl              |  101 +++++++------
 git-mergetool--lib.sh                  |  243 +++++++++++++++++---------------
 6 files changed, 195 insertions(+), 167 deletions(-)
Signature · 1 line
1.7.3.2.msysgit.11
#1 lore raw

PATCH 1/3 mergetool--lib: Sort tools alphabetically for easier lookup

---
 Documentation/git-difftool.txt  |    4 +-
 Documentation/git-mergetool.txt |    4 +-
 Documentation/merge-config.txt  |    8 +-
 git-gui/lib/mergetool.tcl       |   94 ++++++++--------
 git-mergetool--lib.sh           |  234 +++++++++++++++++++-------------------
 5 files changed, 172 insertions(+), 172 deletions(-)
Documentation/git-difftool.txt +2 -2
index 8250bad..a54fbf1 100644
@@ -30,8 +30,8 @@ OPTIONS
 --tool=<tool>::
 	Use the diff tool specified by <tool>.
 	Valid merge tools are:
-	kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
-	ecmerge, diffuse, opendiff, p4merge and araxis.
+	araxis, diffuse, emerge, ecmerge, gvimdiff, kdiff3,
+	kompare, meld, opendiff, p4merge, tkdiff, vimdiff and xxdiff.
 +
 If a diff tool is not specified, 'git difftool'
 will use the configuration variable `diff.tool`.  If the
Documentation/git-mergetool.txt +2 -2
index 1f75a84..4987245 100644
@@ -26,8 +26,8 @@ OPTIONS
 --tool=<tool>::
 	Use the merge resolution program specified by <tool>.
 	Valid merge tools are:
-	kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
-	diffuse, tortoisemerge, opendiff, p4merge and araxis.
+	araxis, diffuse, ecmerge, emerge, gvimdiff, kdiff3,
+	meld, opendiff, p4merge, tkdiff, tortoisemerge, vimdiff and xxdiff.
 +
 If a merge resolution program is not specified, 'git mergetool'
 will use the configuration variable `merge.tool`.  If the
Documentation/merge-config.txt +4 -4
index b72f533..2c4ca09 100644
@@ -31,10 +31,10 @@ merge.stat::
 
 merge.tool::
 	Controls which merge resolution program is used by
-	linkgit:git-mergetool[1].  Valid built-in values are: "kdiff3",
-	"tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff",
-	"diffuse", "ecmerge", "tortoisemerge", "p4merge", "araxis" and
-	"opendiff".  Any other value is treated is custom merge tool
+	linkgit:git-mergetool[1].  Valid built-in values are: "araxis",
+	"diffuse", "ecmerge", "emerge", "gvimdiff", "kdiff3", "meld",
+	"opendiff", "p4merge", "tkdiff", "tortoisemerge", "vimdiff"
+	and "xxdiff".  Any other value is treated is custom merge tool
 	and there must be a corresponding mergetool.<tool>.cmd option.
 
 merge.verbosity::
git-gui/lib/mergetool.tcl +47 -47

137 lines not on this page · raw message

git-mergetool--lib.sh +117 -117

336 lines not on this page · raw message

Signature · 1 line
1.7.3.2.msysgit.11
#2 lore raw

PATCH 2/3 mergetool--lib: Add Beyond Compare 3 as a tool

In reply to Sebastian Schuberth
---
 Documentation/git-difftool.txt         |    2 +-
 Documentation/git-mergetool.txt        |    2 +-
 Documentation/merge-config.txt         |    2 +-
 contrib/completion/git-completion.bash |    2 +-
 git-gui/lib/mergetool.tcl              |    7 +++++++
 git-mergetool--lib.sh                  |   22 ++++++++++++++++++++--
 6 files changed, 31 insertions(+), 6 deletions(-)
Documentation/git-difftool.txt +1 -1
index a54fbf1..005e481 100644
@@ -30,7 +30,7 @@ OPTIONS
 --tool=<tool>::
 	Use the diff tool specified by <tool>.
 	Valid merge tools are:
-	araxis, diffuse, emerge, ecmerge, gvimdiff, kdiff3,
+	araxis, bc3, diffuse, emerge, ecmerge, gvimdiff, kdiff3,
 	kompare, meld, opendiff, p4merge, tkdiff, vimdiff and xxdiff.
 +
 If a diff tool is not specified, 'git difftool'
Documentation/git-mergetool.txt +1 -1
index 4987245..740b3f1 100644
@@ -26,7 +26,7 @@ OPTIONS
 --tool=<tool>::
 	Use the merge resolution program specified by <tool>.
 	Valid merge tools are:
-	araxis, diffuse, ecmerge, emerge, gvimdiff, kdiff3,
+	araxis, bc3, diffuse, ecmerge, emerge, gvimdiff, kdiff3,
 	meld, opendiff, p4merge, tkdiff, tortoisemerge, vimdiff and xxdiff.
 +
 If a merge resolution program is not specified, 'git mergetool'
Documentation/merge-config.txt +1 -1
index 2c4ca09..ca8fb2c 100644
@@ -32,7 +32,7 @@ merge.stat::
 merge.tool::
 	Controls which merge resolution program is used by
 	linkgit:git-mergetool[1].  Valid built-in values are: "araxis",
-	"diffuse", "ecmerge", "emerge", "gvimdiff", "kdiff3", "meld",
+	"bc3", "diffuse", "ecmerge", "emerge", "gvimdiff", "kdiff3", "meld",
 	"opendiff", "p4merge", "tkdiff", "tortoisemerge", "vimdiff"
 	and "xxdiff".  Any other value is treated is custom merge tool
 	and there must be a corresponding mergetool.<tool>.cmd option.
contrib/completion/git-completion.bash +1 -1
index f83f019..6507a4c 100755
@@ -1135,7 +1135,7 @@ _git_diff ()
 }
 
 __git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
-			tkdiff vimdiff gvimdiff xxdiff araxis p4merge
+			tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3
 "
 
 _git_difftool ()
git-gui/lib/mergetool.tcl +7 -0
index 249e0cf..3c8e73b 100644
@@ -187,6 +187,13 @@ proc merge_resolve_tool2 {} {
 				 "$LOCAL" "$REMOTE" "$MERGED"]
 		}
 	}
+	bc3 {
+		if {$base_stage ne {}} {
+			set cmdline [list "$merge_tool_path" "$LOCAL" "$REMOTE" "$BASE" -mergeoutput="$MERGED"]
+		} else {
+			set cmdline [list "$merge_tool_path" "$LOCAL" "$REMOTE" -mergeoutput="$MERGED"]
+		}
+	}
 	ecmerge {
 		if {$base_stage ne {}} {
 			set cmdline [list "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" --default --mode=merge3 --to="$MERGED"]
git-mergetool--lib.sh +20 -2
index aebb070..47049a6 100644
@@ -13,6 +13,9 @@ translate_merge_tool_path () {
 	araxis)
 		echo compare
 		;;
+	bc3)
+		echo BCompare
+		;;
 	emerge)
 		echo emacs
 		;;
@@ -46,7 +49,7 @@ check_unchanged () {
 
 valid_tool () {
 	case "$1" in
-	araxis | diffuse | ecmerge | emerge | gvimdiff | \
+	araxis | bc3 | diffuse | ecmerge | emerge | gvimdiff | \
 	kdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | xxdiff)
 		;; # happy
 	kompare)
@@ -106,6 +109,21 @@ run_merge_tool () {
 				>/dev/null 2>&1
 		fi
 		;;
+	bc3)
+		if merge_mode; then
+			touch "$BACKUP"
+			if $base_present; then
+				"$merge_tool_path" "$LOCAL" "$REMOTE" "$BASE" \
+					-mergeoutput="$MERGED"
+			else
+				"$merge_tool_path" "$LOCAL" "$REMOTE" \
+					-mergeoutput="$MERGED"
+			fi
+			check_unchanged
+		else
+			"$merge_tool_path" "$LOCAL" "$REMOTE"
+		fi
+		;;
 	diffuse)
 		if merge_mode; then
 			touch "$BACKUP"
@@ -337,7 +355,7 @@ guess_merge_tool () {
 		else
 			tools="opendiff kdiff3 tkdiff xxdiff meld $tools"
 		fi
-		tools="$tools gvimdiff diffuse ecmerge p4merge araxis"
+		tools="$tools gvimdiff diffuse ecmerge p4merge araxis bc3"
 	fi
 	case "${VISUAL:-$EDITOR}" in
 	*vim*)
Signature · 1 line
1.7.3.2.msysgit.11
#3 lore raw

PATCH 3/3 mergetool--lib: Add the proper executable name for ECMerge

In reply to Sebastian Schuberth
---
 git-mergetool--lib.sh |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
git-mergetool--lib.sh +3 -0
index 47049a6..58398bd 100644
@@ -16,6 +16,9 @@ translate_merge_tool_path () {
 	bc3)
 		echo BCompare
 		;;
+	ecmerge)
+		echo guimerge
+		;;
 	emerge)
 		echo emacs
 		;;
Signature · 1 line
1.7.3.2.msysgit.11
#4 lore raw
In reply to Sebastian Schuberth
Quoted 8 lines · Sebastian Schuberth

This small series adds Beyond Compare 3 as a diff / merge tool and performs some minor improvements.

Sebastian Schuberth (3):
mergetool--lib: Sort tools alphabetically for easier lookup
mergetool--lib: Add Beyond Compare 3 as a tool
mergetool--lib: Add the proper executable name for ECMerge

Quoted 8 lines
  Documentation/git-difftool.txt         |    4 +-
  Documentation/git-mergetool.txt        |    4 +-
  Documentation/merge-config.txt         |    8 +-
  contrib/completion/git-completion.bash |    2 +-
  git-gui/lib/mergetool.tcl              |  101 +++++++------
  git-mergetool--lib.sh                  |  243 +++++++++++++++++---------------
  6 files changed, 195 insertions(+), 167 deletions(-)

I'm not an ecmerge or Beyond Compare user. The reordering of tools makes for a bit of a messy diff but I think it makes sense.

This series looks good to me. Has it been well tested?

Charles.

#5 lore raw
Quoted 4 lines · Charles Bailey

I'm not an ecmerge or Beyond Compare user. The reordering of tools makes for a bit of a messy diff but I think it makes sense.

This series looks good to me. Has it been well tested?

Not on all platforms. I'm mainly a Windows user where I'm using bc3 as a difftool and ecmerge as a mergetool, and it works fine for me. As soon as I boot into Linux again I plan to test the patches there, too. However, I'd appreciate if someone else could test, too.

Signature · 1 line
Sebastian Schuberth