* [PATCH 0/2 v2] Adding Beyond Compare as a merge tool
@ 2011-02-27 11:28 Sebastian Schuberth
2011-02-27 11:31 ` [PATCH 1/2 v2] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Sebastian Schuberth @ 2011-02-27 11:28 UTC (permalink / raw)
To: git, Junio C Hamano; +Cc: Chris Packham, charles, Pat Thoyts
This is the second iteration of the series to add Beyond Compare as a merge tool as an alternative to
cp/mergetool-beyondcompare
It replaces calling "BCompare" with "bcompare". While the first is the correct binary name, the latter is the name of the wrapper script to start Beyond Compare on Linux. On Windows, this change does not matter, as Windows is case-insensitive.
Moreover, the third patch in the series has been dropped for similar reasons. While the binary for ECMerge is called "guimerge", the link in /usr/local/bin is called "ecmerge". There is no "ecmerge" executable on Windows, but Windows users need to set mergetool.ecmerge.path anyway, and just specify the path to "guimerge" here.
Sebastian Schuberth (2):
mergetool--lib: Sort tools alphabetically for easier lookup
mergetool--lib: Add Beyond Compare 3 as a tool
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 | 247 +++++++++++++++++---------------
6 files changed, 195 insertions(+), 171 deletions(-)
--
1.7.3.2.msysgit.6.dirty
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2 v2] mergetool--lib: Sort tools alphabetically for easier lookup
2011-02-27 11:28 [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Sebastian Schuberth
@ 2011-02-27 11:31 ` Sebastian Schuberth
2011-02-27 11:32 ` [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
2011-02-28 6:52 ` [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Junio C Hamano
2 siblings, 0 replies; 9+ messages in thread
From: Sebastian Schuberth @ 2011-02-27 11:31 UTC (permalink / raw)
Cc: git, Junio C Hamano, Chris Packham, charles, Pat Thoyts
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
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 | 245 +++++++++++++++++++--------------------
5 files changed, 177 insertions(+), 178 deletions(-)
diff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt
index db87f1d..4c8825d 100644
--- a/Documentation/git-difftool.txt
+++ b/Documentation/git-difftool.txt
@@ -31,8 +31,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
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index 1f75a84..4987245 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt
@@ -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
diff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt
index 1e5c22c..90587db 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -33,10 +33,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::
diff --git a/git-gui/lib/mergetool.tcl b/git-gui/lib/mergetool.tcl
index 3fe90e6..249e0cf 100644
--- a/git-gui/lib/mergetool.tcl
+++ b/git-gui/lib/mergetool.tcl
@@ -175,43 +175,49 @@ proc merge_resolve_tool2 {} {
# Build the command line
switch -- $tool {
- kdiff3 {
+ araxis {
if {$base_stage ne {}} {
- set cmdline [list "$merge_tool_path" --auto --L1 "$MERGED (Base)" \
- --L2 "$MERGED (Local)" --L3 "$MERGED (Remote)" -o "$MERGED" "$BASE" "$LOCAL" "$REMOTE"]
+ set cmdline [list "$merge_tool_path" -wait -merge -3 -a1 \
+ -title1:"'$MERGED (Base)'" -title2:"'$MERGED (Local)'" \
+ -title3:"'$MERGED (Remote)'" \
+ "$BASE" "$LOCAL" "$REMOTE" "$MERGED"]
} else {
- set cmdline [list "$merge_tool_path" --auto --L1 "$MERGED (Local)" \
- --L2 "$MERGED (Remote)" -o "$MERGED" "$LOCAL" "$REMOTE"]
+ set cmdline [list "$merge_tool_path" -wait -2 \
+ -title1:"'$MERGED (Local)'" -title2:"'$MERGED (Remote)'" \
+ "$LOCAL" "$REMOTE" "$MERGED"]
}
}
- tkdiff {
+ ecmerge {
if {$base_stage ne {}} {
- set cmdline [list "$merge_tool_path" -a "$BASE" -o "$MERGED" "$LOCAL" "$REMOTE"]
+ set cmdline [list "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" --default --mode=merge3 --to="$MERGED"]
} else {
- set cmdline [list "$merge_tool_path" -o "$MERGED" "$LOCAL" "$REMOTE"]
+ set cmdline [list "$merge_tool_path" "$LOCAL" "$REMOTE" --default --mode=merge2 --to="$MERGED"]
}
}
- meld {
- set cmdline [list "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"]
+ emerge {
+ if {$base_stage ne {}} {
+ set cmdline [list "$merge_tool_path" -f emerge-files-with-ancestor-command \
+ "$LOCAL" "$REMOTE" "$BASE" "$basename"]
+ } else {
+ set cmdline [list "$merge_tool_path" -f emerge-files-command \
+ "$LOCAL" "$REMOTE" "$basename"]
+ }
}
gvimdiff {
set cmdline [list "$merge_tool_path" -f "$LOCAL" "$MERGED" "$REMOTE"]
}
- xxdiff {
+ kdiff3 {
if {$base_stage ne {}} {
- set cmdline [list "$merge_tool_path" -X --show-merged-pane \
- -R {Accel.SaveAsMerged: "Ctrl-S"} \
- -R {Accel.Search: "Ctrl+F"} \
- -R {Accel.SearchForward: "Ctrl-G"} \
- --merged-file "$MERGED" "$LOCAL" "$BASE" "$REMOTE"]
+ set cmdline [list "$merge_tool_path" --auto --L1 "$MERGED (Base)" \
+ --L2 "$MERGED (Local)" --L3 "$MERGED (Remote)" -o "$MERGED" "$BASE" "$LOCAL" "$REMOTE"]
} else {
- set cmdline [list "$merge_tool_path" -X --show-merged-pane \
- -R {Accel.SaveAsMerged: "Ctrl-S"} \
- -R {Accel.Search: "Ctrl+F"} \
- -R {Accel.SearchForward: "Ctrl-G"} \
- --merged-file "$MERGED" "$LOCAL" "$REMOTE"]
+ set cmdline [list "$merge_tool_path" --auto --L1 "$MERGED (Local)" \
+ --L2 "$MERGED (Remote)" -o "$MERGED" "$LOCAL" "$REMOTE"]
}
}
+ meld {
+ set cmdline [list "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"]
+ }
opendiff {
if {$base_stage ne {}} {
set cmdline [list "$merge_tool_path" "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED"]
@@ -219,22 +225,20 @@ proc merge_resolve_tool2 {} {
set cmdline [list "$merge_tool_path" "$LOCAL" "$REMOTE" -merge "$MERGED"]
}
}
- ecmerge {
- if {$base_stage ne {}} {
- set cmdline [list "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" --default --mode=merge3 --to="$MERGED"]
- } else {
- set cmdline [list "$merge_tool_path" "$LOCAL" "$REMOTE" --default --mode=merge2 --to="$MERGED"]
- }
+ p4merge {
+ set cmdline [list "$merge_tool_path" "$BASE" "$REMOTE" "$LOCAL" "$MERGED"]
}
- emerge {
+ tkdiff {
if {$base_stage ne {}} {
- set cmdline [list "$merge_tool_path" -f emerge-files-with-ancestor-command \
- "$LOCAL" "$REMOTE" "$BASE" "$basename"]
+ set cmdline [list "$merge_tool_path" -a "$BASE" -o "$MERGED" "$LOCAL" "$REMOTE"]
} else {
- set cmdline [list "$merge_tool_path" -f emerge-files-command \
- "$LOCAL" "$REMOTE" "$basename"]
+ set cmdline [list "$merge_tool_path" -o "$MERGED" "$LOCAL" "$REMOTE"]
}
}
+ vimdiff {
+ error_popup [mc "Not a GUI merge tool: '%s'" $tool]
+ return
+ }
winmerge {
if {$base_stage ne {}} {
# This tool does not support 3-way merges.
@@ -245,25 +249,21 @@ proc merge_resolve_tool2 {} {
-dl "Theirs File" -dr "Mine File" "$REMOTE" "$LOCAL" "$MERGED"]
}
}
- araxis {
+ xxdiff {
if {$base_stage ne {}} {
- set cmdline [list "$merge_tool_path" -wait -merge -3 -a1 \
- -title1:"'$MERGED (Base)'" -title2:"'$MERGED (Local)'" \
- -title3:"'$MERGED (Remote)'" \
- "$BASE" "$LOCAL" "$REMOTE" "$MERGED"]
+ set cmdline [list "$merge_tool_path" -X --show-merged-pane \
+ -R {Accel.SaveAsMerged: "Ctrl-S"} \
+ -R {Accel.Search: "Ctrl+F"} \
+ -R {Accel.SearchForward: "Ctrl-G"} \
+ --merged-file "$MERGED" "$LOCAL" "$BASE" "$REMOTE"]
} else {
- set cmdline [list "$merge_tool_path" -wait -2 \
- -title1:"'$MERGED (Local)'" -title2:"'$MERGED (Remote)'" \
- "$LOCAL" "$REMOTE" "$MERGED"]
+ set cmdline [list "$merge_tool_path" -X --show-merged-pane \
+ -R {Accel.SaveAsMerged: "Ctrl-S"} \
+ -R {Accel.Search: "Ctrl+F"} \
+ -R {Accel.SearchForward: "Ctrl-G"} \
+ --merged-file "$MERGED" "$LOCAL" "$REMOTE"]
}
}
- p4merge {
- set cmdline [list "$merge_tool_path" "$BASE" "$REMOTE" "$LOCAL" "$MERGED"]
- }
- vimdiff {
- error_popup [mc "Not a GUI merge tool: '%s'" $tool]
- return
- }
default {
error_popup [mc "Unsupported merge tool '%s'" $tool]
return
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 77d4aee..9fb82e5 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -10,17 +10,17 @@ merge_mode() {
translate_merge_tool_path () {
case "$1" in
- vimdiff|vimdiff2)
- echo vim
- ;;
- gvimdiff|gvimdiff2)
- echo gvim
+ araxis)
+ echo compare
;;
emerge)
echo emacs
;;
- araxis)
- echo compare
+ gvimdiff|gvimdiff2)
+ echo gvim
+ ;;
+ vimdiff|vimdiff2)
+ echo vim
;;
*)
echo "$1"
@@ -46,17 +46,16 @@ check_unchanged () {
valid_tool () {
case "$1" in
- kdiff3 | tkdiff | xxdiff | meld | opendiff | \
- vimdiff | gvimdiff | vimdiff2 | gvimdiff2 | \
- emerge | ecmerge | diffuse | araxis | p4merge)
+ araxis | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \
+ kdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | vimdiff2 | xxdiff)
;; # happy
- tortoisemerge)
- if ! merge_mode; then
+ kompare)
+ if ! diff_mode; then
return 1
fi
;;
- kompare)
- if ! diff_mode; then
+ tortoisemerge)
+ if ! merge_mode; then
return 1
fi
;;
@@ -89,69 +88,22 @@ run_merge_tool () {
status=0
case "$1" in
- kdiff3)
- if merge_mode; then
- if $base_present; then
- ("$merge_tool_path" --auto \
- --L1 "$MERGED (Base)" \
- --L2 "$MERGED (Local)" \
- --L3 "$MERGED (Remote)" \
- -o "$MERGED" \
- "$BASE" "$LOCAL" "$REMOTE" \
- > /dev/null 2>&1)
- else
- ("$merge_tool_path" --auto \
- --L1 "$MERGED (Local)" \
- --L2 "$MERGED (Remote)" \
- -o "$MERGED" \
- "$LOCAL" "$REMOTE" \
- > /dev/null 2>&1)
- fi
- status=$?
- else
- ("$merge_tool_path" --auto \
- --L1 "$MERGED (A)" \
- --L2 "$MERGED (B)" "$LOCAL" "$REMOTE" \
- > /dev/null 2>&1)
- fi
- ;;
- kompare)
- "$merge_tool_path" "$LOCAL" "$REMOTE"
- ;;
- tkdiff)
- if merge_mode; then
- if $base_present; then
- "$merge_tool_path" -a "$BASE" \
- -o "$MERGED" "$LOCAL" "$REMOTE"
- else
- "$merge_tool_path" \
- -o "$MERGED" "$LOCAL" "$REMOTE"
- fi
- status=$?
- else
- "$merge_tool_path" "$LOCAL" "$REMOTE"
- fi
- ;;
- p4merge)
+ araxis)
if merge_mode; then
- touch "$BACKUP"
+ touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
+ "$merge_tool_path" -wait -merge -3 -a1 \
+ "$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
+ >/dev/null 2>&1
else
- "$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
+ "$merge_tool_path" -wait -2 \
+ "$LOCAL" "$REMOTE" "$MERGED" \
+ >/dev/null 2>&1
fi
check_unchanged
else
- "$merge_tool_path" "$LOCAL" "$REMOTE"
- fi
- ;;
- meld)
- if merge_mode; then
- touch "$BACKUP"
- "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
- check_unchanged
- else
- "$merge_tool_path" "$LOCAL" "$REMOTE"
+ "$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
+ >/dev/null 2>&1
fi
;;
diffuse)
@@ -170,23 +122,58 @@ run_merge_tool () {
"$merge_tool_path" "$LOCAL" "$REMOTE" | cat
fi
;;
- vimdiff|gvimdiff)
+ ecmerge)
if merge_mode; then
touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" -f -d -c "wincmd J" \
- "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
+ "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" \
+ --default --mode=merge3 --to="$MERGED"
else
- "$merge_tool_path" -f -d -c "wincmd l" \
- "$LOCAL" "$MERGED" "$REMOTE"
+ "$merge_tool_path" "$LOCAL" "$REMOTE" \
+ --default --mode=merge2 --to="$MERGED"
fi
check_unchanged
else
- "$merge_tool_path" -f -d -c "wincmd l" \
+ "$merge_tool_path" --default --mode=diff2 \
"$LOCAL" "$REMOTE"
fi
;;
- vimdiff2|gvimdiff2)
+ emerge)
+ if merge_mode; then
+ if $base_present; then
+ "$merge_tool_path" \
+ -f emerge-files-with-ancestor-command \
+ "$LOCAL" "$REMOTE" "$BASE" \
+ "$(basename "$MERGED")"
+ else
+ "$merge_tool_path" \
+ -f emerge-files-command \
+ "$LOCAL" "$REMOTE" \
+ "$(basename "$MERGED")"
+ fi
+ status=$?
+ else
+ "$merge_tool_path" -f emerge-files-command \
+ "$LOCAL" "$REMOTE"
+ fi
+ ;;
+ gvimdiff|vimdiff)
+ if merge_mode; then
+ touch "$BACKUP"
+ if $base_present; then
+ "$merge_tool_path" -f -d -c "wincmd J" \
+ "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
+ else
+ "$merge_tool_path" -f -d -c "wincmd l" \
+ "$LOCAL" "$MERGED" "$REMOTE"
+ fi
+ check_unchanged
+ else
+ "$merge_tool_path" -f -d -c "wincmd l" \
+ "$LOCAL" "$REMOTE"
+ fi
+ ;;
+ gvimdiff2|vimdiff2)
if merge_mode; then
touch "$BACKUP"
"$merge_tool_path" -f -d -c "wincmd l" \
@@ -197,30 +184,42 @@ run_merge_tool () {
"$LOCAL" "$REMOTE"
fi
;;
- xxdiff)
+ kdiff3)
if merge_mode; then
- touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" -X --show-merged-pane \
- -R 'Accel.SaveAsMerged: "Ctrl-S"' \
- -R 'Accel.Search: "Ctrl+F"' \
- -R 'Accel.SearchForward: "Ctrl-G"' \
- --merged-file "$MERGED" \
- "$LOCAL" "$BASE" "$REMOTE"
+ ("$merge_tool_path" --auto \
+ --L1 "$MERGED (Base)" \
+ --L2 "$MERGED (Local)" \
+ --L3 "$MERGED (Remote)" \
+ -o "$MERGED" \
+ "$BASE" "$LOCAL" "$REMOTE" \
+ > /dev/null 2>&1)
else
- "$merge_tool_path" -X $extra \
- -R 'Accel.SaveAsMerged: "Ctrl-S"' \
- -R 'Accel.Search: "Ctrl+F"' \
- -R 'Accel.SearchForward: "Ctrl-G"' \
- --merged-file "$MERGED" \
- "$LOCAL" "$REMOTE"
+ ("$merge_tool_path" --auto \
+ --L1 "$MERGED (Local)" \
+ --L2 "$MERGED (Remote)" \
+ -o "$MERGED" \
+ "$LOCAL" "$REMOTE" \
+ > /dev/null 2>&1)
fi
+ status=$?
+ else
+ ("$merge_tool_path" --auto \
+ --L1 "$MERGED (A)" \
+ --L2 "$MERGED (B)" "$LOCAL" "$REMOTE" \
+ > /dev/null 2>&1)
+ fi
+ ;;
+ kompare)
+ "$merge_tool_path" "$LOCAL" "$REMOTE"
+ ;;
+ meld)
+ if merge_mode; then
+ touch "$BACKUP"
+ "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
check_unchanged
else
- "$merge_tool_path" \
- -R 'Accel.Search: "Ctrl+F"' \
- -R 'Accel.SearchForward: "Ctrl-G"' \
- "$LOCAL" "$REMOTE"
+ "$merge_tool_path" "$LOCAL" "$REMOTE"
fi
;;
opendiff)
@@ -239,39 +238,31 @@ run_merge_tool () {
"$merge_tool_path" "$LOCAL" "$REMOTE" | cat
fi
;;
- ecmerge)
+ p4merge)
if merge_mode; then
- touch "$BACKUP"
+ touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" \
- --default --mode=merge3 --to="$MERGED"
+ "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
else
- "$merge_tool_path" "$LOCAL" "$REMOTE" \
- --default --mode=merge2 --to="$MERGED"
+ "$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
fi
check_unchanged
else
- "$merge_tool_path" --default --mode=diff2 \
- "$LOCAL" "$REMOTE"
+ "$merge_tool_path" "$LOCAL" "$REMOTE"
fi
;;
- emerge)
+ tkdiff)
if merge_mode; then
if $base_present; then
- "$merge_tool_path" \
- -f emerge-files-with-ancestor-command \
- "$LOCAL" "$REMOTE" "$BASE" \
- "$(basename "$MERGED")"
+ "$merge_tool_path" -a "$BASE" \
+ -o "$MERGED" "$LOCAL" "$REMOTE"
else
"$merge_tool_path" \
- -f emerge-files-command \
- "$LOCAL" "$REMOTE" \
- "$(basename "$MERGED")"
+ -o "$MERGED" "$LOCAL" "$REMOTE"
fi
status=$?
else
- "$merge_tool_path" -f emerge-files-command \
- "$LOCAL" "$REMOTE"
+ "$merge_tool_path" "$LOCAL" "$REMOTE"
fi
;;
tortoisemerge)
@@ -286,22 +277,30 @@ run_merge_tool () {
status=1
fi
;;
- araxis)
+ xxdiff)
if merge_mode; then
touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" -wait -merge -3 -a1 \
- "$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
- >/dev/null 2>&1
+ "$merge_tool_path" -X --show-merged-pane \
+ -R 'Accel.SaveAsMerged: "Ctrl-S"' \
+ -R 'Accel.Search: "Ctrl+F"' \
+ -R 'Accel.SearchForward: "Ctrl-G"' \
+ --merged-file "$MERGED" \
+ "$LOCAL" "$BASE" "$REMOTE"
else
- "$merge_tool_path" -wait -2 \
- "$LOCAL" "$REMOTE" "$MERGED" \
- >/dev/null 2>&1
+ "$merge_tool_path" -X $extra \
+ -R 'Accel.SaveAsMerged: "Ctrl-S"' \
+ -R 'Accel.Search: "Ctrl+F"' \
+ -R 'Accel.SearchForward: "Ctrl-G"' \
+ --merged-file "$MERGED" \
+ "$LOCAL" "$REMOTE"
fi
check_unchanged
else
- "$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
- >/dev/null 2>&1
+ "$merge_tool_path" \
+ -R 'Accel.Search: "Ctrl+F"' \
+ -R 'Accel.SearchForward: "Ctrl-G"' \
+ "$LOCAL" "$REMOTE"
fi
;;
*)
--
1.7.3.2.msysgit.6.dirty
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool
2011-02-27 11:28 [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Sebastian Schuberth
2011-02-27 11:31 ` [PATCH 1/2 v2] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
@ 2011-02-27 11:32 ` Sebastian Schuberth
2011-02-28 6:15 ` Chris Packham
2011-02-28 6:52 ` [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Junio C Hamano
2 siblings, 1 reply; 9+ messages in thread
From: Sebastian Schuberth @ 2011-02-27 11:32 UTC (permalink / raw)
Cc: git, Junio C Hamano, Chris Packham, charles, Pat Thoyts
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
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(-)
diff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt
index 4c8825d..f087eff 100644
--- a/Documentation/git-difftool.txt
+++ b/Documentation/git-difftool.txt
@@ -31,7 +31,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'
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index 4987245..740b3f1 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt
@@ -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'
diff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt
index 90587db..33bf74c 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -34,7 +34,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.
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 893b771..058c2a9 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1358,7 +1358,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 ()
diff --git a/git-gui/lib/mergetool.tcl b/git-gui/lib/mergetool.tcl
index 249e0cf..3c8e73b 100644
--- a/git-gui/lib/mergetool.tcl
+++ b/git-gui/lib/mergetool.tcl
@@ -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"]
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 9fb82e5..bfb3913 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -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 | gvimdiff2 | \
+ araxis | bc3 | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \
kdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | vimdiff2 | 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"
@@ -342,7 +360,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*)
--
1.7.3.2.msysgit.6.dirty
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool
2011-02-27 11:32 ` [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
@ 2011-02-28 6:15 ` Chris Packham
2011-02-28 6:25 ` Sebastian Schuberth
0 siblings, 1 reply; 9+ messages in thread
From: Chris Packham @ 2011-02-28 6:15 UTC (permalink / raw)
To: Sebastian Schuberth; +Cc: git, Junio C Hamano, charles, Pat Thoyts
On 28/02/11 00:32, Sebastian Schuberth wrote:
> Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
> ---
> 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(-)
Works for me.
Tested-by: Chris Packham <judge.packham@gmail.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool
2011-02-28 6:15 ` Chris Packham
@ 2011-02-28 6:25 ` Sebastian Schuberth
0 siblings, 0 replies; 9+ messages in thread
From: Sebastian Schuberth @ 2011-02-28 6:25 UTC (permalink / raw)
To: Chris Packham; +Cc: git, Junio C Hamano, charles, Pat Thoyts
On Mon, Feb 28, 2011 at 07:15, Chris Packham <judge.packham@gmail.com> wrote:
>> Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
>> ---
>> 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(-)
>
> Works for me.
>
> Tested-by: Chris Packham <judge.packham@gmail.com>
Great, thanks for testing!
--
Sebastian Schuberth
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2 v2] Adding Beyond Compare as a merge tool
2011-02-27 11:28 [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Sebastian Schuberth
2011-02-27 11:31 ` [PATCH 1/2 v2] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
2011-02-27 11:32 ` [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
@ 2011-02-28 6:52 ` Junio C Hamano
2011-02-28 7:02 ` Sebastian Schuberth
2011-03-02 0:28 ` Pat Thoyts
2 siblings, 2 replies; 9+ messages in thread
From: Junio C Hamano @ 2011-02-28 6:52 UTC (permalink / raw)
To: Sebastian Schuberth; +Cc: git, Chris Packham, charles, Pat Thoyts
Sebastian Schuberth <sschuberth@gmail.com> writes:
> Sebastian Schuberth (2):
> mergetool--lib: Sort tools alphabetically for easier lookup
> mergetool--lib: Add Beyond Compare 3 as a tool
>
> 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 | 247 +++++++++++++++++---------------
> 6 files changed, 195 insertions(+), 171 deletions(-)
Hmm, I really would have liked if you took the hint and separated git-gui
bits into separate patches.
I saw Tested-by from Chris, so I'll add that to what is queued on 'pu',
ask Pat to keep an eye on the ss/git-gui-mergetool branch, and then merge
my ss/mergetool--lib branch to 'master' during my next integration run.
IOW, no need for further actions from you on this topic for now unless you
have incremental improvements on top.
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2 v2] Adding Beyond Compare as a merge tool
2011-02-28 6:52 ` [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Junio C Hamano
@ 2011-02-28 7:02 ` Sebastian Schuberth
2011-03-02 0:28 ` Pat Thoyts
1 sibling, 0 replies; 9+ messages in thread
From: Sebastian Schuberth @ 2011-02-28 7:02 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Chris Packham, charles, Pat Thoyts
On Mon, Feb 28, 2011 at 07:52, Junio C Hamano <gitster@pobox.com> wrote:
>> Sebastian Schuberth (2):
>> mergetool--lib: Sort tools alphabetically for easier lookup
>> mergetool--lib: Add Beyond Compare 3 as a tool
>>
>> 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 | 247 +++++++++++++++++---------------
>> 6 files changed, 195 insertions(+), 171 deletions(-)
>
> Hmm, I really would have liked if you took the hint and separated git-gui
> bits into separate patches.
Sorry, I somehow thought this would not be necessary as there were no
changes to git-gui/lib/mergetool.tcl since v1, but that was a a dumb
thought. I'll separate the patches if I have incremental updates.
--
Sebastian Schuberth
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2 v2] Adding Beyond Compare as a merge tool
2011-02-28 6:52 ` [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Junio C Hamano
2011-02-28 7:02 ` Sebastian Schuberth
@ 2011-03-02 0:28 ` Pat Thoyts
2011-03-02 4:26 ` Junio C Hamano
1 sibling, 1 reply; 9+ messages in thread
From: Pat Thoyts @ 2011-03-02 0:28 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Sebastian Schuberth, git, Chris Packham, charles
Junio C Hamano <gitster@pobox.com> writes:
>Sebastian Schuberth <sschuberth@gmail.com> writes:
>
>> Sebastian Schuberth (2):
>> mergetool--lib: Sort tools alphabetically for easier lookup
>> mergetool--lib: Add Beyond Compare 3 as a tool
>>
>> 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 | 247 +++++++++++++++++---------------
>> 6 files changed, 195 insertions(+), 171 deletions(-)
>
>Hmm, I really would have liked if you took the hint and separated git-gui
>bits into separate patches.
>
>I saw Tested-by from Chris, so I'll add that to what is queued on 'pu',
>ask Pat to keep an eye on the ss/git-gui-mergetool branch, and then merge
>my ss/mergetool--lib branch to 'master' during my next integration run.
Where is this branch?
--
Pat Thoyts http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97 10 CE 11 E6 04 E0 B9 DD
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2 v2] Adding Beyond Compare as a merge tool
2011-03-02 0:28 ` Pat Thoyts
@ 2011-03-02 4:26 ` Junio C Hamano
0 siblings, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2011-03-02 4:26 UTC (permalink / raw)
To: Pat Thoyts; +Cc: Sebastian Schuberth, git, Chris Packham, charles
Pat Thoyts <patthoyts@users.sourceforge.net> writes:
> Junio C Hamano <gitster@pobox.com> writes:
>
>>Sebastian Schuberth <sschuberth@gmail.com> writes:
>>
>>> Sebastian Schuberth (2):
>>> mergetool--lib: Sort tools alphabetically for easier lookup
>>> mergetool--lib: Add Beyond Compare 3 as a tool
>>>
>>> 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 | 247 +++++++++++++++++---------------
>>> 6 files changed, 195 insertions(+), 171 deletions(-)
>>
>>Hmm, I really would have liked if you took the hint and separated git-gui
>>bits into separate patches.
>>
>>I saw Tested-by from Chris, so I'll add that to what is queued on 'pu',
>>ask Pat to keep an eye on the ss/git-gui-mergetool branch, and then merge
>>my ss/mergetool--lib branch to 'master' during my next integration run.
>
> Where is this branch?
$ git log --oneline --first-parent master..pu
Look for the commit that merge ss/git-gui-mergetool and pick its second
parent, which is ffe6dc0 (mergetool--lib: Add Beyond Compare 3 as a tool,
2011-02-27).
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-03-02 4:26 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-27 11:28 [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Sebastian Schuberth
2011-02-27 11:31 ` [PATCH 1/2 v2] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
2011-02-27 11:32 ` [PATCH 2/2 v2] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
2011-02-28 6:15 ` Chris Packham
2011-02-28 6:25 ` Sebastian Schuberth
2011-02-28 6:52 ` [PATCH 0/2 v2] Adding Beyond Compare as a merge tool Junio C Hamano
2011-02-28 7:02 ` Sebastian Schuberth
2011-03-02 0:28 ` Pat Thoyts
2011-03-02 4:26 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).