# We must be large enough to meet the MINIMUM_BREAK_SIZE
 # requirement.
 make_file() {
+       # common first line to help identify rewrite versus regular diff
+       printf "=\n" >file
        for i in 1 2 3 4 5 6 7 8 9 10
        do
                for j in 1 2 3 4 5 6 7 8 9
                                printf "$1\n"
                        done
                done
-       done >file
+       done >>file
 }
 
 test_expect_success 'create binary file with changes' '
        grep "GIT binary patch" diff
 '
 
+test_expect_success 'rewrite diff --numstat shows binary changes' '
+       git diff -B --numstat --summary >diff &&
+       grep -e "-      -       " diff &&
+       grep " rewrite file" diff
+'
+
+test_expect_success 'diff --stat counts binary rewrite as 0 lines' '
+       git diff -B --stat --summary >diff &&
+       grep "Bin" diff &&
+       test_i18ngrep "0 insertions.*0 deletions" diff &&
+       grep " rewrite file" diff
+'
+
+{
+       echo "#!$SHELL_PATH"
+       cat <<'EOF'
+"$PERL_PATH" -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < "$1"
+EOF
+} >dump
+chmod +x dump
+
+test_expect_success 'setup textconv' '
+       echo file diff=foo >.gitattributes &&
+       git config diff.foo.textconv "\"$(pwd)\""/dump
+'
+
+test_expect_success 'rewrite diff respects textconv' '
+       git diff -B >diff &&
+       grep "dissimilarity index" diff &&
+       grep "^-61" diff &&
+       grep "^-0" diff
+'
+
 test_done