Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Documentation/RelNotes/2.54.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,12 @@ Performance, Internal Implementation, Development Support etc.
* In case homebrew breaks REG_ENHANCED again, leave a in-code comment
to suggest use of our replacement regex as a workaround.
* MinGW build updates.
* The way dash 0.5.13 handles non-ASCII contents in here-doc
is buggy and breaks our existing tests, which unfortunately
have been rewritten to avoid triggering the bug.
Fixes since v2.53
-----------------
Expand Down
4 changes: 4 additions & 0 deletions compat/mingw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1394,6 +1394,9 @@ int mingw_utime (const char *file_name, const struct utimbuf *times)
size_t mingw_strftime(char *s, size_t max,
const char *format, const struct tm *tm)
{
#ifdef _UCRT
size_t ret = strftime(s, max, format, tm);
#else
/* a pointer to the original strftime in case we can't find the UCRT version */
static size_t (*fallback)(char *, size_t, const char *, const struct tm *) = strftime;
size_t ret;
Expand All @@ -1404,6 +1407,7 @@ size_t mingw_strftime(char *s, size_t max,
ret = strftime(s, max, format, tm);
else
ret = fallback(s, max, format, tm);
#endif

if (!ret && errno == EINVAL)
die("invalid strftime format: '%s'", format);
Expand Down
6 changes: 5 additions & 1 deletion contrib/buildsystems/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ endif()
#function checks
set(function_checks
strcasestr memmem strlcpy strtoimax strtoumax strtoull
setenv mkdtemp poll pread memmem)
setenv mkdtemp poll pread memmem writev)

#unsetenv,hstrerror are incompatible with windows build
if(NOT WIN32)
Expand Down Expand Up @@ -421,6 +421,10 @@ if(NOT HAVE_MEMMEM)
list(APPEND compat_SOURCES compat/memmem.c)
endif()

if(NOT HAVE_WRITEV)
list(APPEND compat_SOURCES compat/writev.c)
endif()

if(NOT WIN32)
if(NOT HAVE_UNSETENV)
list(APPEND compat_SOURCES compat/unsetenv.c)
Expand Down
4 changes: 3 additions & 1 deletion t/t0300-credentials.sh
Original file line number Diff line number Diff line change
Expand Up @@ -675,7 +675,9 @@ test_expect_success 'match percent-encoded values' '
test_expect_success 'match percent-encoded UTF-8 values in path' '
test_config credential.https://example.com.useHttpPath true &&
test_config credential.https://example.com/perú.git.helper "$HELPER" &&
check fill <<-\EOF
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
check fill <<-EOF
url=https://example.com/per%C3%BA.git
--
protocol=https
Expand Down
6 changes: 4 additions & 2 deletions t/t3430-rebase-merges.sh
Original file line number Diff line number Diff line change
Expand Up @@ -507,9 +507,11 @@ test_expect_success 'octopus merges' '
git rebase -i --force-rebase -r HEAD^^ &&
test "Hank" = "$(git show -s --format=%an HEAD)" &&
test "$before" != $(git rev-parse HEAD) &&
test_cmp_graph HEAD^^.. <<-\EOF
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
test_cmp_graph HEAD^^.. <<-EOF
*-. Tüntenfüsch
|\ \
|\\ \\
| | * three
| * | two
| |/
Expand Down
16 changes: 9 additions & 7 deletions t/t3902-quoted.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,18 @@ With SP in it
"\346\277\261\351\207\216\347\264\224"
EOF
cat >expect.raw <<\EOF
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >expect.raw <<EOF
Name
"Name and a\nLF"
"Name and an\tHT"
"Name\""
"Name and a\\nLF"
"Name and an\\tHT"
"Name\\""
With SP in it
"濱野\t純"
"濱野\n純"
"濱野\\t純"
"濱野\\n純"
濱野 純
"濱野\"純"
"濱野\\"純"
濱野/file
濱野純
EOF
Expand Down
16 changes: 12 additions & 4 deletions t/t4014-format-patch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1410,7 +1410,9 @@ test_expect_success 'format-patch wraps extremely long from-header (rfc2047)' '
check_author "Foö Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar"
'

cat >expect <<'EOF'
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >expect <<EOF
From: Foö Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar
Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo
Bar Foo Bar Foo Bar Foo Bar <author@example.com>
Expand All @@ -1425,7 +1427,9 @@ test_expect_success 'format-patch wraps extremely long from-header (non-ASCII wi
test_cmp expect actual
'

cat >expect <<'EOF'
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >expect <<EOF
Subject: [PATCH] Foö
EOF
test_expect_success 'subject lines are unencoded with --no-encode-email-headers' '
Expand All @@ -1437,7 +1441,9 @@ test_expect_success 'subject lines are unencoded with --no-encode-email-headers'
test_cmp expect actual
'

cat >expect <<'EOF'
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >expect <<EOF
Subject: [PATCH] Foö
EOF
test_expect_success 'subject lines are unencoded with format.encodeEmailHeaders=false' '
Expand Down Expand Up @@ -1656,7 +1662,9 @@ test_expect_success 'in-body headers trigger content encoding' '
test_env GIT_AUTHOR_NAME="éxötìc" test_commit exotic &&
test_when_finished "git reset --hard HEAD^" &&
git format-patch -1 --stdout --from >patch &&
cat >expect <<-\EOF &&
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >expect <<-EOF &&
From: C O Mitter <committer@example.com>
Content-Type: text/plain; charset=UTF-8

Expand Down
4 changes: 3 additions & 1 deletion t/t4201-shortlog.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ test_expect_success 'output from user-defined format is re-wrapped' '
'

test_expect_success !MINGW,ICONV 'shortlog wrapping' '
cat >expect <<\EOF &&
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >expect <<EOF &&
A U Thor (5):
Test
This is a very, very long first line for the commit message to see if
Expand Down
12 changes: 9 additions & 3 deletions t/t9001-send-email.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1649,7 +1649,9 @@ test_expect_success $PREREQ 'To headers from files reset each patch' '
'

test_expect_success $PREREQ 'setup expect' '
cat >email-using-8bit <<\EOF
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >email-using-8bit <<EOF
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
Message-ID: <bogus-message-id@example.com>
From: author@example.com
Expand Down Expand Up @@ -1735,7 +1737,9 @@ test_expect_success $PREREQ '--8bit-encoding overrides sendemail.8bitEncoding' '
'

test_expect_success $PREREQ 'setup expect' '
cat >email-using-8bit <<-\EOF
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >email-using-8bit <<-EOF
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
Message-ID: <bogus-message-id@example.com>
From: author@example.com
Expand Down Expand Up @@ -1764,7 +1768,9 @@ test_expect_success $PREREQ '--8bit-encoding also treats subject' '
'

test_expect_success $PREREQ 'setup expect' '
cat >email-using-8bit <<-\EOF
# NOTE: do not quote this heredoc, Dash 0.5.13 has a bug with heredocs
# that contain multibyte chars.
cat >email-using-8bit <<-EOF
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
Message-ID: <bogus-message-id@example.com>
From: A U Thor <author@example.com>
Expand Down
32 changes: 14 additions & 18 deletions t/t9300-fast-import.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3635,25 +3635,21 @@ background_import_then_checkpoint () {
echo "progress checkpoint"
) >&8 &

error=1 ;# assume the worst
while read output <&9
do
if test "$output" = "progress checkpoint"
then
error=0
break
elif test "$output" = "UNEXPECTED"
then
break
fi
# otherwise ignore cruft
echo >&2 "cruft: $output"
done
last=$(
while read output <&9
do
if test "$output" = "progress checkpoint" || test "$output" = "UNEXPECTED"
then
echo "$output"
break
else
# otherwise ignore cruft
echo >&2 "cruft: $output"
fi
done
)

if test $error -eq 1
then
false
fi
test "$last" = "progress checkpoint"
}

background_import_still_running () {
Expand Down