aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--builtin/push.c9
-rw-r--r--transport.c12
-rw-r--r--transport.h4
3 files changed, 17 insertions, 8 deletions
diff --git a/builtin/push.c b/builtin/push.c
index 59d4485603..51c609f208 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -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;
diff --git a/transport.c b/transport.c
index 1098bbd60e..19b7e4cffd 100644
--- a/transport.c
+++ b/transport.c
@@ -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))
diff --git a/transport.h b/transport.h
index 6393cd9823..44100fa9b7 100644
--- a/transport.h
+++ b/transport.h
@@ -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