[PATCH] mergetool: Suppress stderr and fix the "both added" test
From: David Aguilar <hidden>
Date: 2016-06-15 22:52:50
Subsystem:
the rest · Maintainer:
Linus Torvalds
Silence error messages when "git checkout-index" is used to checkout a stage that does not exist. This can happen now that mergetool calls checkout_staged_file() unconditionally when creating the temporary $BASE, $LOCAL, and $REMOTE files. Fix the test so that it checks the contents of the "both added" file. The test was passing as a consequence of accidentally handing a bad path to "cat". Signed-off-by: David Aguilar <redacted> --- This applies on top of da/maint-mergetool-twoway in pu. git-mergetool.sh | 4 +++- t/t7610-mergetool.sh | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/git-mergetool.sh b/git-mergetool.sh
index 24bedc5..a9f23f7 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh@@ -181,7 +181,9 @@ stage_submodule () { } checkout_staged_file () { - tmpfile=$(expr "$(git checkout-index --temp --stage="$1" "$2")" : '\([^ ]*\) ') + tmpfile=$(expr \ + "$(git checkout-index --temp --stage="$1" "$2" 2>/dev/null)" \ + : '\([^ ]*\) ') if test $? -eq 0 -a -n "$tmpfile" ; then mv -- "$(git rev-parse --show-cdup)$tmpfile" "$3"
diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh
index 2272743..3f261a3 100755
--- a/t/t7610-mergetool.sh
+++ b/t/t7610-mergetool.sh@@ -465,8 +465,9 @@ test_expect_success 'directory vs modified submodule' ' test_expect_success 'file with no base' ' git checkout -b test13 branch1 && test_must_fail git merge master && - git mergetool --no-prompt --tool mybase -- base && - test "$(cat "$MERGED")" = "" && + git mergetool --no-prompt --tool mybase -- both && + >expected && + test_cmp both expected && git reset --hard master >/dev/null 2>&1 '
--
1.7.7.166.g1cd0c