Merge branch 'nd/stop-setenv-work-tree'
[gitweb.git] / builtin / send-pack.c
index 0ce3bc8c41985b0c55926db97fab47e24a581f18..f6e5d643c193d28b14107bf9a9e4ee7aa36ca933 100644 (file)
@@ -97,6 +97,31 @@ static void print_helper_status(struct ref *ref)
        strbuf_release(&buf);
 }
 
+static int send_pack_config(const char *k, const char *v, void *cb)
+{
+       git_gpg_config(k, v, NULL);
+
+       if (!strcmp(k, "push.gpgsign")) {
+               const char *value;
+               if (!git_config_get_value("push.gpgsign", &value)) {
+                       switch (git_config_maybe_bool("push.gpgsign", value)) {
+                       case 0:
+                               args.push_cert = SEND_PACK_PUSH_CERT_NEVER;
+                               break;
+                       case 1:
+                               args.push_cert = SEND_PACK_PUSH_CERT_ALWAYS;
+                               break;
+                       default:
+                               if (value && !strcasecmp(value, "if-asked"))
+                                       args.push_cert = SEND_PACK_PUSH_CERT_IF_ASKED;
+                               else
+                                       return error("Invalid value for '%s'", k);
+                       }
+               }
+       }
+       return 0;
+}
+
 int cmd_send_pack(int argc, const char **argv, const char *prefix)
 {
        int i, nr_refspecs = 0;
@@ -153,7 +178,7 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
                OPT_END()
        };
 
-       git_config(git_gpg_config, NULL);
+       git_config(send_pack_config, NULL);
        argc = parse_options(argc, argv, prefix, options, send_pack_usage, 0);
        if (argc > 0) {
                dest = argv[0];