diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index de00adbb9e..5f6db92a4c 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -3892,6 +3892,18 @@ static int option_parse_unpack_unreachable(const struct option *opt,
return 0;
}
+static int option_parse_uri_protocol(const struct option *opt,
+ const char *arg, int unset)
+{
+ if (!arg) {
+ string_list_append(&uri_protocols, "http");
+ string_list_append(&uri_protocols, "https");
+ } else {
+ string_list_append(&uri_protocols, arg);
+ }
+ return 0;
+}
+
int cmd_pack_objects(int argc, const char **argv, const char *prefix)
{
int use_internal_rev_list = 0;@@ -3995,9 +4007,9 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
N_("do not pack objects in promisor packfiles")),
OPT_BOOL(0, "delta-islands", &use_delta_islands,
N_("respect islands during delta compression")),
- OPT_STRING_LIST(0, "uri-protocol", &uri_protocols,
- N_("protocol"),
- N_("exclude any configured uploadpack.blobpackfileuri with this protocol")),
+ OPT_CALLBACK_F(0, "uri-protocol", NULL, N_("protocol"),
+ N_("exclude any configured uploadpack.blobpackfileuri with this protocol"),
+ PARSE_OPT_OPTARG, option_parse_uri_protocol),
OPT_END(),
};
diff --git a/fetch-pack.c b/fetch-pack.c
index c135635e34..511a892d4c 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1755,11 +1755,14 @@ static void fetch_pack_config(void)
git_config_get_bool("transfer.fsckobjects", &transfer_fsck_objects);
git_config_get_bool("transfer.advertisesid", &advertise_sid);
if (!uri_protocols.nr) {
- char *str;
-
- if (!git_config_get_string("fetch.uriprotocols", &str) && str) {
- string_list_split(&uri_protocols, str, ',', -1);
- free(str);
+ const char *value;
+
+ if (!git_config_get_value("fetch.uriprotocols", &value)) {
+ if (!value || !strcmp(value, "")) {
+ string_list_append(&uri_protocols, "http");
+ string_list_append(&uri_protocols, "https");
+ } else
+ string_list_split(&uri_protocols, value, ',', -1);
}
}
--
2.32.0.1.g0de8fe24d1.dirty