diff --git a/Documentation/config.txt b/Documentation/config.txt index 4e1a682e89..c4dab9a841 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -2374,3 +2374,9 @@ web.browser:: Specify a web browser that may be used by some commands. Currently only linkgit:git-instaweb[1] and linkgit:git-help[1] may use it. + +sendpack.sideband:: + Allows to disable the side-band-64k capability for send-pack even + when it is advertised by the server. Makes it possible to work + around a limitation in the git for windows implementation together + with the dump git protocol. Defaults to true. diff --git a/send-pack.c b/send-pack.c index 6129b0fd8e..aace1fc51d 100644 --- a/send-pack.c +++ b/send-pack.c @@ -12,6 +12,16 @@ #include "version.h" #include "sha1-array.h" +static int config_use_sideband = 1; + +static int send_pack_config(const char *var, const char *value, void *unused) +{ + if (!strcmp("sendpack.sideband", var)) + config_use_sideband = git_config_bool(var, value); + + return 0; +} + static int feed_object(const unsigned char *sha1, int fd, int negative) { char buf[42]; @@ -209,6 +219,8 @@ int send_pack(struct send_pack_args *args, int ret; struct async demux; + git_config(send_pack_config, NULL); + /* Does the other end support the reporting? */ if (server_supports("report-status")) status_report = 1; @@ -216,7 +228,7 @@ int send_pack(struct send_pack_args *args, allow_deleting_refs = 1; if (server_supports("ofs-delta")) args->use_ofs_delta = 1; - if (server_supports("side-band-64k")) + if (config_use_sideband && server_supports("side-band-64k")) use_sideband = 1; if (server_supports("quiet")) quiet_supported = 1;