Thanks for the review, Junio.
I hadn't thought about using the return code for `get_merge_tool` so
thanks for that suggestion. It should be a lot cleaner now.
---
Changes since v2:
* Unsuppress output in t7610
* Make `get_merge_tool` return 1 on guessed so we don't have to deal
with parsing '$guessed:$merge_tool'
Changes since v1:
* Introduce get_merge_tool_guessed function instead of changing
get_merge_tool
* Remove unnecessary if-tower in mutual exclusivity logic
Denton Liu (6):
t7610: unsuppress output
t7610: add mergetool --gui tests
mergetool: use get_merge_tool function
mergetool: fallback to tool when guitool unavailable
difftool: make --gui, --tool and --extcmd mutually exclusive
difftool: fallback on merge.guitool
Documentation/git-difftool.txt | 4 +-
Documentation/git-mergetool--lib.txt | 4 +-
Documentation/git-mergetool.txt | 4 +-
builtin/difftool.c | 13 +--
git-difftool--helper.sh | 2 +-
git-mergetool--lib.sh | 32 ++++--
git-mergetool.sh | 12 +-
t/t7610-mergetool.sh | 163 +++++++++++++++++----------
t/t7800-difftool.sh | 24 ++++
9 files changed, 167 insertions(+), 91 deletions(-)
Range-diff against v2:
-: ---------- > 1: 9f9922cab3 t7610: unsuppress output
1: c436765684 ! 2: 0f632ca6bf t7610: add mergetool --gui tests
@@ -23,14 +23,14 @@
+ test_when_finished "git reset --hard" &&
+ git checkout -b test$test_count branch1 &&
+ git submodule update -N &&
-+ test_must_fail git merge master >/dev/null 2>&1 &&
-+ ( yes "" | git mergetool --gui both >/dev/null 2>&1 ) &&
++ test_must_fail git merge master &&
++ ( yes "" | git mergetool --gui both ) &&
+ ( yes "" | git mergetool -g file1 file1 ) &&
-+ ( yes "" | git mergetool --gui file2 "spaced name" >/dev/null 2>&1 ) &&
-+ ( yes "" | git mergetool --gui subdir/file3 >/dev/null 2>&1 ) &&
-+ ( yes "d" | git mergetool --gui file11 >/dev/null 2>&1 ) &&
-+ ( yes "d" | git mergetool --gui file12 >/dev/null 2>&1 ) &&
-+ ( yes "l" | git mergetool --gui submod >/dev/null 2>&1 ) &&
++ ( yes "" | git mergetool --gui file2 "spaced name" ) &&
++ ( yes "" | git mergetool --gui subdir/file3 ) &&
++ ( yes "d" | git mergetool --gui file11 ) &&
++ ( yes "d" | git mergetool --gui file12 ) &&
++ ( yes "l" | git mergetool --gui submod ) &&
+ test "$(cat file1)" = "gui master updated" &&
+ test "$(cat file2)" = "gui master new" &&
+ test "$(cat subdir/file3)" = "gui master new sub" &&
2: 9f8e76a421 < -: ---------- mergetool: use get_merge_tool_guessed function
-: ---------- > 3: ff83d25ff2 mergetool: use get_merge_tool function
3: 4847e64e46 ! 4: e975fe4a8b mergetool: fallback to tool when guitool
unavailable
@@ -81,18 +81,18 @@
git commit -m "branch1 resolved with mergetool"
'
-+test_expect_success 'gui mergetool without merge.guitool set fallsback to
merge.tool' '
++test_expect_success 'gui mergetool without merge.guitool set falls back
to merge.tool' '
+ test_when_finished "git reset --hard" &&
+ git checkout -b test$test_count branch1 &&
+ git submodule update -N &&
-+ test_must_fail git merge master >/dev/null 2>&1 &&
-+ ( yes "" | git mergetool --gui both >/dev/null 2>&1 ) &&
++ test_must_fail git merge master &&
++ ( yes "" | git mergetool --gui both ) &&
+ ( yes "" | git mergetool -g file1 file1 ) &&
-+ ( yes "" | git mergetool --gui file2 "spaced name" >/dev/null 2>&1 ) &&
-+ ( yes "" | git mergetool --gui subdir/file3 >/dev/null 2>&1 ) &&
-+ ( yes "d" | git mergetool --gui file11 >/dev/null 2>&1 ) &&
-+ ( yes "d" | git mergetool --gui file12 >/dev/null 2>&1 ) &&
-+ ( yes "l" | git mergetool --gui submod >/dev/null 2>&1 ) &&
++ ( yes "" | git mergetool --gui file2 "spaced name" ) &&
++ ( yes "" | git mergetool --gui subdir/file3 ) &&
++ ( yes "d" | git mergetool --gui file11 ) &&
++ ( yes "d" | git mergetool --gui file12 ) &&
++ ( yes "l" | git mergetool --gui submod ) &&
+ test "$(cat file1)" = "master updated" &&
+ test "$(cat file2)" = "master new" &&
+ test "$(cat subdir/file3)" = "master new sub" &&
4: bc8cadaf55 = 5: bc3e229171 difftool: make --gui, --tool and --extcmd
mutually exclusive
5: e5e4dc3dd2 = 6: f39b15efbd difftool: fallback on merge.guitool
--
2.21.0.1000.g7817e26e80