]> git.ipfire.org Git - thirdparty/git.git/commitdiff
transport: introduce parse_transport_option() method
authorXing Xin <xingxin.xx@bytedance.com>
Tue, 8 Oct 2024 03:38:15 +0000 (03:38 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 8 Oct 2024 17:22:06 +0000 (10:22 -0700)
Add the `parse_transport_option()` method to parse the `push.pushOption`
configuration. This method will also be used in the next commit to
handle the new `remote.<name>.serverOption` configuration for setting
server options in Git protocol v2.

Signed-off-by: Xing Xin <xingxin.xx@bytedance.com>
Reviewed-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/push.c
transport.c
transport.h

index 59d4485603a3862548267d5b696feca61343237f..51c609f2089e64a54d824fdb243e5b49524f854e 100644 (file)
@@ -519,14 +519,7 @@ static int git_push_config(const char *k, const char *v,
                        RECURSE_SUBMODULES_ON_DEMAND : RECURSE_SUBMODULES_OFF;
                recurse_submodules = val;
        } else if (!strcmp(k, "push.pushoption")) {
-               if (!v)
-                       return config_error_nonbool(k);
-               else
-                       if (!*v)
-                               string_list_clear(&push_options_config, 0);
-                       else
-                               string_list_append(&push_options_config, v);
-               return 0;
+               return parse_transport_option(k, v, &push_options_config);
        } else if (!strcmp(k, "color.push")) {
                push_use_color = git_config_colorbool(k, v);
                return 0;
index 1098bbd60e4f6594d5889ea28dc0fe0cffa79a19..19b7e4cffd3f10198ba54bc184a2bb7a890d547a 100644 (file)
@@ -1108,6 +1108,18 @@ int is_transport_allowed(const char *type, int from_user)
        BUG("invalid protocol_allow_config type");
 }
 
+int parse_transport_option(const char *var, const char *value,
+                          struct string_list *transport_options)
+{
+       if (!value)
+               return config_error_nonbool(var);
+       if (!*value)
+               string_list_clear(transport_options, 0);
+       else
+               string_list_append(transport_options, value);
+       return 0;
+}
+
 void transport_check_allowed(const char *type)
 {
        if (!is_transport_allowed(type, -1))
index 6393cd9823c01f878000ded305cf621b2b526824..44100fa9b7fdd6f073a6a64d2979d408117a81d6 100644 (file)
@@ -342,4 +342,8 @@ void transport_print_push_status(const char *dest, struct ref *refs,
 /* common method used by transport-helper.c and send-pack.c */
 void reject_atomic_push(struct ref *refs, int mirror_mode);
 
+/* common method to parse push-option or server-option from config */
+int parse_transport_option(const char *var, const char *value,
+                          struct string_list *transport_options);
+
 #endif