diff options
-rw-r--r-- | Documentation/config.txt | 5 | ||||
-rw-r--r-- | fetch-pack.c | 14 | ||||
-rw-r--r-- | receive-pack.c | 24 | ||||
-rwxr-xr-x | t/t5500-fetch-pack.sh | 2 |
4 files changed, 35 insertions, 10 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 383ff29f82..8086d75368 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -488,3 +488,8 @@ receive.denyNonFastForwards:: even if that push is forced. This configuration variable is set when initializing a shared repository. +transfer.unpackLimit:: + When `fetch.unpackLimit` or `receive.unpackLimit` are + not set, the value of this variable is used instead. + + diff --git a/fetch-pack.c b/fetch-pack.c index fc0534ce03..83a1d7b319 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -8,6 +8,8 @@ #include "sideband.h" static int keep_pack; +static int transfer_unpack_limit = -1; +static int fetch_unpack_limit = -1; static int unpack_limit = 100; static int quiet; static int verbose; @@ -645,7 +647,12 @@ static int remove_duplicates(int nr_heads, char **heads) static int fetch_pack_config(const char *var, const char *value) { if (strcmp(var, "fetch.unpacklimit") == 0) { - unpack_limit = git_config_int(var, value); + fetch_unpack_limit = git_config_int(var, value); + return 0; + } + + if (strcmp(var, "transfer.unpacklimit") == 0) { + transfer_unpack_limit = git_config_int(var, value); return 0; } @@ -666,6 +673,11 @@ int main(int argc, char **argv) setup_ident(); git_config(fetch_pack_config); + if (0 <= transfer_unpack_limit) + unpack_limit = transfer_unpack_limit; + else if (0 <= fetch_unpack_limit) + unpack_limit = fetch_unpack_limit; + nr_heads = 0; heads = NULL; for (i = 1; i < argc; i++) { diff --git a/receive-pack.c b/receive-pack.c index b3a4552692..8b59b3227e 100644 --- a/receive-pack.c +++ b/receive-pack.c @@ -10,6 +10,8 @@ static const char receive_pack_usage[] = "git-receive-pack <git-dir>"; static int deny_non_fast_forwards = 0; +static int receive_unpack_limit = -1; +static int transfer_unpack_limit = -1; static int unpack_limit = 100; static int report_status; @@ -18,21 +20,22 @@ static int capabilities_sent; static int receive_pack_config(const char *var, const char *value) { - git_default_config(var, value); - - if (strcmp(var, "receive.denynonfastforwards") == 0) - { + if (strcmp(var, "receive.denynonfastforwards") == 0) { deny_non_fast_forwards = git_config_bool(var, value); return 0; } - if (strcmp(var, "receive.unpacklimit") == 0) - { - unpack_limit = git_config_int(var, value); + if (strcmp(var, "receive.unpacklimit") == 0) { + receive_unpack_limit = git_config_int(var, value); return 0; } - return 0; + if (strcmp(var, "transfer.unpacklimit") == 0) { + transfer_unpack_limit = git_config_int(var, value); + return 0; + } + + return git_default_config(var, value); } static int show_ref(const char *path, const unsigned char *sha1, int flag, void *cb_data) @@ -431,6 +434,11 @@ int main(int argc, char **argv) ignore_missing_committer_name(); git_config(receive_pack_config); + if (0 <= transfer_unpack_limit) + unpack_limit = transfer_unpack_limit; + else if (0 <= receive_unpack_limit) + unpack_limit = receive_unpack_limit; + write_head_info(); /* EOF */ diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh index 7fd651b1c4..058cce0775 100755 --- a/t/t5500-fetch-pack.sh +++ b/t/t5500-fetch-pack.sh @@ -98,7 +98,7 @@ pull_to_client () { mkdir client && cd client && git-init 2>> log2.txt && - git repo-config fetch.unpacklimit 0 + git repo-config transfer.unpacklimit 0 ) add A1 |