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>
This commit is contained in:
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,33 +538,50 @@ test_expect_success 'with 2 files arguments' '
test_cmp expected actual
'
test_expect_success 'with message that has comments' '
cat basic_message >message_with_comments &&
sed -e "s/ Z\$/ /" >>message_with_comments <<-\EOF &&
# comment
# 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
# other comment
Cc: Z
# yet another comment
Reviewed-by: Johan
Reviewed-by: Z
# last comment
test_expect_success "with message that has comments ($char)" '
cat basic_message >message_with_comments &&
sed -e "s/ Z\$/ /" \
-e "s/#/$char/g" >>message_with_comments <<-EOF &&
# comment
EOF
cat basic_patch >>message_with_comments &&
cat basic_message >expected &&
cat >>expected <<-\EOF &&
# comment
# other comment
Cc: Z
# yet another comment
Reviewed-by: Johan
Reviewed-by: Z
# last comment
Reviewed-by: Johan
Cc: Peff
# last comment
EOF
cat basic_patch >>message_with_comments &&
cat basic_message >expected &&
sed -e "s/#/$char/g" >>expected <<-\EOF &&
# comment
EOF
cat basic_patch >>expected &&
git interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&
test_cmp expected actual
'
Reviewed-by: Johan
Cc: Peff
# last comment
EOF
cat basic_patch >>expected &&
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 &&