interpret-trailers: load default config

The interpret-trailers program does not do the usual loading of config
via git_default_config(), and thus does not respect many of the usual
options. In particular, we will not load core.commentChar, even though
the underlying trailer code uses its value.

This can be seen in the accompanying test, where setting
core.commentChar to anything besides "#" results in a failure to treat
the comments correctly.

Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jeff King 2019-06-18 23:37:28 -04:00 committed by Junio C Hamano
parent 0d0ac3826a
commit 29c83fc23f
2 changed files with 43 additions and 23 deletions

View File

@ -10,6 +10,7 @@
#include "parse-options.h"
#include "string-list.h"
#include "trailer.h"
#include "config.h"

static const char * const git_interpret_trailers_usage[] = {
N_("git interpret-trailers [--in-place] [--trim-empty] [(--trailer <token>[(=|:)<value>])...] [<file>...]"),
@ -112,6 +113,8 @@ int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)
OPT_END()
};

git_config(git_default_config, NULL);

argc = parse_options(argc, argv, prefix, options,
git_interpret_trailers_usage, 0);


View File

@ -538,9 +538,23 @@ test_expect_success 'with 2 files arguments' '
test_cmp expected actual
'

test_expect_success 'with message that has comments' '
# Cover multiple comment characters with the same test input.
for char in "#" ";"
do
case "$char" in
"#")
# This is the default, so let's explicitly _not_
# set any config to make sure it behaves as we expect.
;;
*)
config="-c core.commentChar=$char"
;;
esac

test_expect_success "with message that has comments ($char)" '
cat basic_message >message_with_comments &&
sed -e "s/ Z\$/ /" >>message_with_comments <<-\EOF &&
sed -e "s/ Z\$/ /" \
-e "s/#/$char/g" >>message_with_comments <<-EOF &&
# comment

# other comment
@ -553,7 +567,7 @@ test_expect_success 'with message that has comments' '
EOF
cat basic_patch >>message_with_comments &&
cat basic_message >expected &&
cat >>expected <<-\EOF &&
sed -e "s/#/$char/g" >>expected <<-\EOF &&
# comment

Reviewed-by: Johan
@ -562,9 +576,12 @@ test_expect_success 'with message that has comments' '

EOF
cat basic_patch >>expected &&
git interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&
git $config interpret-trailers \
--trim-empty --trailer "Cc: Peff" \
message_with_comments >actual &&
test_cmp expected actual
'
done

test_expect_success 'with message that has an old style conflict block' '
cat basic_message >message_with_comments &&