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