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>

Jeff King committed Sep 12, 2016 at 20:23 UTC 4a73aaaf18099ec1897330dd6c4a09f10ea2f573
2 files changed +15 -1
git.c
+1 -1
@@ -444,7 +444,7 @@ static struct cmd_struct commands[] = {
444 { "pack-objects", cmd_pack_objects, RUN_SETUP },
445 { "pack-redundant", cmd_pack_redundant, RUN_SETUP },
446 { "pack-refs", cmd_pack_refs, RUN_SETUP },
447 - { "patch-id", cmd_patch_id },
447 + { "patch-id", cmd_patch_id, RUN_SETUP_GENTLY },
448 { "pickaxe", cmd_blame, RUN_SETUP },
449 { "prune", cmd_prune, RUN_SETUP },
450 { "prune-packed", cmd_prune_packed, RUN_SETUP },
t/t4204-patch-id.sh
+14
@@ -143,6 +143,20 @@ test_expect_success 'patch-id supports git-format-patch MIME output' '
143 test_cmp patch-id_master patch-id_same
144 '
145
146 +test_expect_success 'patch-id respects config from subdir' '
147 + test_config patchid.stable true &&
148 + mkdir subdir &&
149 +
150 + # copy these because test_patch_id() looks for them in
151 + # the current directory
152 + cp bar-then-foo foo-then-bar subdir &&
153 +
154 + (
155 + cd subdir &&
156 + test_patch_id irrelevant patchid.stable=true
157 + )
158 +'
159 +
160 cat >nonl <<\EOF
161 diff --git i/a w/a
162 index e69de29..2e65efe 100644