patch-id: use RUN_SETUP_GENTLY

Patch-id does not require a repository because it is just
processing the incoming diff on stdin, but it may look at
git config for keys like patchid.stable.

Even though we do not setup_git_directory(), this works from
the top-level of a repository because we blindly look at
".git/config" in this case. But as the included test
demonstrates, it does not work from a subdirectory.

We can fix it by using RUN_SETUP_GENTLY. We do not take any
filenames from the user on the command line, so there's no
need to adjust them via prefix_filename().

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2016-09-12 20:23:22 -07:00 committed by Junio C Hamano
parent 0e94ee9415
commit 4a73aaaf18
2 changed files with 15 additions and 1 deletions

2
git.c
View File

@ -444,7 +444,7 @@ static struct cmd_struct commands[] = {
{ "pack-objects", cmd_pack_objects, RUN_SETUP }, { "pack-objects", cmd_pack_objects, RUN_SETUP },
{ "pack-redundant", cmd_pack_redundant, RUN_SETUP }, { "pack-redundant", cmd_pack_redundant, RUN_SETUP },
{ "pack-refs", cmd_pack_refs, RUN_SETUP }, { "pack-refs", cmd_pack_refs, RUN_SETUP },
{ "patch-id", cmd_patch_id }, { "patch-id", cmd_patch_id, RUN_SETUP_GENTLY },
{ "pickaxe", cmd_blame, RUN_SETUP }, { "pickaxe", cmd_blame, RUN_SETUP },
{ "prune", cmd_prune, RUN_SETUP }, { "prune", cmd_prune, RUN_SETUP },
{ "prune-packed", cmd_prune_packed, RUN_SETUP }, { "prune-packed", cmd_prune_packed, RUN_SETUP },

View File

@ -143,6 +143,20 @@ test_expect_success 'patch-id supports git-format-patch MIME output' '
test_cmp patch-id_master patch-id_same test_cmp patch-id_master patch-id_same
' '
test_expect_success 'patch-id respects config from subdir' '
test_config patchid.stable true &&
mkdir subdir &&
# copy these because test_patch_id() looks for them in
# the current directory
cp bar-then-foo foo-then-bar subdir &&
(
cd subdir &&
test_patch_id irrelevant patchid.stable=true
)
'
cat >nonl <<\EOF cat >nonl <<\EOF
diff --git i/a w/a diff --git i/a w/a
index e69de29..2e65efe 100644 index e69de29..2e65efe 100644