Re: git rebase -i error message interprets \t in commit message
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Aug 6, 2013, 17:19 UTC
- Message-ID
- <vpqd2pqka9e.fsf@anie.imag.fr>
- In-Reply-To
- <87fvum694z.fsf@fencepost.gnu.org>
David Kastrup <dak@gnu.org> writes:
Show 18 quoted lines
>> diff --git a/git-sh-setup.sh b/git-sh-setup.sh
>> index 7a964ad..97258d5 100644
>> --- a/git-sh-setup.sh
>> +++ b/git-sh-setup.sh
>> @@ -53,7 +53,7 @@ die () {
>> die_with_status () {
>> status=$1
>> shift
>> - echo >&2 "$*"
>> + printf >&2 "%s\n" "$*"
>> exit "$status"
>> }
>>
>> It does not sound crazy as the shell function "say" right below uses the
>> same printf "%s\n" "$*",
>
> Sounds reasonable, though I don't know off-hand (not having the source
> here) whether using "say" inside of die_with_status The definition of say is:
say () {
if test -z "$GIT_QUIET"
then
printf '%s\n' "$*"
fi
}I don't think we want to disable die's output even when the caller requested to be quiet. Currently, my patch is:
>From 7962ac8d8f2cbc556f669fd97487f9d70edc4ea1 Mon Sep 17 00:00:00 2001
From: Matthieu Moy <Matthieu.Moy@imag.fr> Date: Tue, 6 Aug 2013 19:13:03 +0200 Subject: [PATCH] die_with_status: use "printf '%s\n'", not "echo"
At least GNU echo interprets backslashes in its arguments.
This triggered at least one bug: the error message of "rebase -i" was turning \t in commit messages into actual tabulations. There may be others.
Using "printf '%s\n'" instead avoids this bad behavior, and is the form used by the "say" function.
Noticed-by: David Kastrup <dak@gnu.org> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- git-sh-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 7a964ad..e15be51 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -53,7 +53,7 @@ die () { die_with_status () { status=$1 shift - echo >&2 "$*" + printf >&2 '%s\n' "$*" exit "$status" }
-- 1.8.3.3.797.gb72c616 I'll resend properly for inclusion if no one objects. -- Matthieu Moy http://www-verimag.imag.fr/~moy/