* [PATCH 0/3] Improvements to mergetool-lib
@ 2010-11-18 10:40 Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 1/3] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Sebastian Schuberth @ 2010-11-18 10:40 UTC (permalink / raw)
To: git; +Cc: David Aguilar, Junio C Hamano
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(-)
--
1.7.3.2.msysgit.11
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] mergetool--lib: Sort tools alphabetically for easier lookup
2010-11-18 10:40 [PATCH 0/3] Improvements to mergetool-lib Sebastian Schuberth
@ 2010-11-18 10:43 ` Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 2/3] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Sebastian Schuberth @ 2010-11-18 10:43 UTC (permalink / raw)
Cc: git, David Aguilar, Junio C Hamano
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 | 234 +++++++++++++++++++-------------------
5 files changed, 172 insertions(+), 172 deletions(-)
diff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt
index 8250bad..a54fbf1 100644
--- a/Documentation/git-difftool.txt
+++ b/Documentation/git-difftool.txt
@@ -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
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 b72f533..2c4ca09 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -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::
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 b5e1943..aebb070 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)
- echo vim
- ;;
- gvimdiff)
- echo gvim
+ araxis)
+ echo compare
;;
emerge)
echo emacs
;;
- araxis)
- echo compare
+ gvimdiff)
+ echo gvim
+ ;;
+ vimdiff)
+ echo vim
;;
*)
echo "$1"
@@ -46,16 +46,16 @@ check_unchanged () {
valid_tool () {
case "$1" in
- kdiff3 | tkdiff | xxdiff | meld | opendiff | \
- emerge | vimdiff | gvimdiff | ecmerge | diffuse | araxis | p4merge)
+ araxis | diffuse | ecmerge | emerge | gvimdiff | \
+ kdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | 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
;;
@@ -88,95 +88,72 @@ run_merge_tool () {
status=0
case "$1" in
- kdiff3)
+ araxis)
if merge_mode; then
+ touch "$BACKUP"
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)
+ "$merge_tool_path" -wait -merge -3 -a1 \
+ "$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
+ >/dev/null 2>&1
else
- ("$merge_tool_path" --auto \
- --L1 "$MERGED (Local)" \
- --L2 "$MERGED (Remote)" \
- -o "$MERGED" \
- "$LOCAL" "$REMOTE" \
- > /dev/null 2>&1)
+ "$merge_tool_path" -wait -2 \
+ "$LOCAL" "$REMOTE" "$MERGED" \
+ >/dev/null 2>&1
fi
- status=$?
+ check_unchanged
else
- ("$merge_tool_path" --auto \
- --L1 "$MERGED (A)" \
- --L2 "$MERGED (B)" "$LOCAL" "$REMOTE" \
- > /dev/null 2>&1)
+ "$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
+ >/dev/null 2>&1
fi
;;
- kompare)
- "$merge_tool_path" "$LOCAL" "$REMOTE"
- ;;
- tkdiff)
+ diffuse)
if merge_mode; then
+ touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" -a "$BASE" \
- -o "$MERGED" "$LOCAL" "$REMOTE"
+ "$merge_tool_path" \
+ "$LOCAL" "$MERGED" "$REMOTE" \
+ "$BASE" | cat
else
"$merge_tool_path" \
- -o "$MERGED" "$LOCAL" "$REMOTE"
+ "$LOCAL" "$MERGED" "$REMOTE" | cat
fi
- status=$?
+ check_unchanged
else
- "$merge_tool_path" "$LOCAL" "$REMOTE"
+ "$merge_tool_path" "$LOCAL" "$REMOTE" | cat
fi
;;
- p4merge)
+ ecmerge)
if merge_mode; then
- touch "$BACKUP"
+ touch "$BACKUP"
if $base_present; then
- "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
+ "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" \
+ --default --mode=merge3 --to="$MERGED"
else
- "$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
+ "$merge_tool_path" "$LOCAL" "$REMOTE" \
+ --default --mode=merge2 --to="$MERGED"
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" --default --mode=diff2 \
+ "$LOCAL" "$REMOTE"
fi
;;
- diffuse)
+ emerge)
if merge_mode; then
- touch "$BACKUP"
if $base_present; then
"$merge_tool_path" \
- "$LOCAL" "$MERGED" "$REMOTE" \
- "$BASE" | cat
+ -f emerge-files-with-ancestor-command \
+ "$LOCAL" "$REMOTE" "$BASE" \
+ "$(basename "$MERGED")"
else
"$merge_tool_path" \
- "$LOCAL" "$MERGED" "$REMOTE" | cat
+ -f emerge-files-command \
+ "$LOCAL" "$REMOTE" \
+ "$(basename "$MERGED")"
fi
- check_unchanged
- else
- "$merge_tool_path" "$LOCAL" "$REMOTE" | cat
- fi
- ;;
- vimdiff)
- if merge_mode; then
- touch "$BACKUP"
- "$merge_tool_path" -d -c "wincmd l" \
- "$LOCAL" "$MERGED" "$REMOTE"
- check_unchanged
+ status=$?
else
- "$merge_tool_path" -d -c "wincmd l" \
+ "$merge_tool_path" -f emerge-files-command \
"$LOCAL" "$REMOTE"
fi
;;
@@ -191,30 +168,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)
@@ -233,39 +222,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)
@@ -280,22 +261,41 @@ run_merge_tool () {
status=1
fi
;;
- araxis)
+ vimdiff)
+ if merge_mode; then
+ touch "$BACKUP"
+ "$merge_tool_path" -d -c "wincmd l" \
+ "$LOCAL" "$MERGED" "$REMOTE"
+ check_unchanged
+ else
+ "$merge_tool_path" -d -c "wincmd l" \
+ "$LOCAL" "$REMOTE"
+ fi
+ ;;
+ 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.11
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] mergetool--lib: Add Beyond Compare 3 as a tool
2010-11-18 10:40 [PATCH 0/3] Improvements to mergetool-lib Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 1/3] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
@ 2010-11-18 10:43 ` Sebastian Schuberth
2010-11-18 10:44 ` [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge Sebastian Schuberth
2010-11-18 11:27 ` [PATCH 0/3] Improvements to mergetool-lib Charles Bailey
3 siblings, 0 replies; 6+ messages in thread
From: Sebastian Schuberth @ 2010-11-18 10:43 UTC (permalink / raw)
Cc: git, David Aguilar, Junio C Hamano
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 a54fbf1..005e481 100644
--- a/Documentation/git-difftool.txt
+++ b/Documentation/git-difftool.txt
@@ -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'
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 2c4ca09..ca8fb2c 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -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.
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index f83f019..6507a4c 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -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 ()
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 aebb070..47049a6 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 | \
+ 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*)
--
1.7.3.2.msysgit.11
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge
2010-11-18 10:40 [PATCH 0/3] Improvements to mergetool-lib Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 1/3] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 2/3] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
@ 2010-11-18 10:44 ` Sebastian Schuberth
2010-11-18 11:27 ` [PATCH 0/3] Improvements to mergetool-lib Charles Bailey
3 siblings, 0 replies; 6+ messages in thread
From: Sebastian Schuberth @ 2010-11-18 10:44 UTC (permalink / raw)
Cc: git, David Aguilar, Junio C Hamano
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
git-mergetool--lib.sh | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 47049a6..58398bd 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -16,6 +16,9 @@ translate_merge_tool_path () {
bc3)
echo BCompare
;;
+ ecmerge)
+ echo guimerge
+ ;;
emerge)
echo emacs
;;
--
1.7.3.2.msysgit.11
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/3] Improvements to mergetool-lib
2010-11-18 10:40 [PATCH 0/3] Improvements to mergetool-lib Sebastian Schuberth
` (2 preceding siblings ...)
2010-11-18 10:44 ` [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge Sebastian Schuberth
@ 2010-11-18 11:27 ` Charles Bailey
2010-11-18 12:22 ` Sebastian Schuberth
3 siblings, 1 reply; 6+ messages in thread
From: Charles Bailey @ 2010-11-18 11:27 UTC (permalink / raw)
To: Sebastian Schuberth; +Cc: git, David Aguilar, Junio C Hamano
On 18/11/2010 10:40, Sebastian Schuberth wrote:
> 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(-)
>
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.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/3] Improvements to mergetool-lib
2010-11-18 11:27 ` [PATCH 0/3] Improvements to mergetool-lib Charles Bailey
@ 2010-11-18 12:22 ` Sebastian Schuberth
0 siblings, 0 replies; 6+ messages in thread
From: Sebastian Schuberth @ 2010-11-18 12:22 UTC (permalink / raw)
To: Charles Bailey; +Cc: git, David Aguilar, Junio C Hamano
On Thu, Nov 18, 2010 at 12:27, Charles Bailey <charles@hashpling.org> wrote:
> 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.
--
Sebastian Schuberth
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-11-18 12:22 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-18 10:40 [PATCH 0/3] Improvements to mergetool-lib Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 1/3] mergetool--lib: Sort tools alphabetically for easier lookup Sebastian Schuberth
2010-11-18 10:43 ` [PATCH 2/3] mergetool--lib: Add Beyond Compare 3 as a tool Sebastian Schuberth
2010-11-18 10:44 ` [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge Sebastian Schuberth
2010-11-18 11:27 ` [PATCH 0/3] Improvements to mergetool-lib Charles Bailey
2010-11-18 12:22 ` Sebastian Schuberth
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.