Affecting the transfers caused by git-fetch, the option allows to control network operations similar to --ipv4 and --ipv6 options. Suggested-by: Jeff King <peff@xxxxxxxx> Signed-off-by: Alex Riesen <alexander.riesen@xxxxxxxxxxx> --- Jeff King, Tue, Sep 15, 2020 15:05:06 +0200: > On Tue, Sep 15, 2020 at 01:50:25PM +0200, Alex Riesen wrote: > > Sure! Thinking about it, I actually would have preferred to have both: a > > config option and a command-line option. So that I can set --ipv4 in, say, > > ~/.config/git/config file, but still have the option to try --ipv6 from time > > to time to check if the network setup magically fixed itself. > > > > What would the preferred name for that config option be? fetch.ipv? > > It looks like we've got similar options for clone/pull (which are really > fetch under the hood of course) and push. We have the "transfer.*" > namespace which applies to both already. So maybe "transfer.ipversion" > or something? Something like this? Documentation/config/transfer.txt | 7 +++++++ builtin/fetch.c | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/Documentation/config/transfer.txt b/Documentation/config/transfer.txt index f5b6245270..cc0e97fbb1 100644 --- a/Documentation/config/transfer.txt +++ b/Documentation/config/transfer.txt @@ -69,3 +69,10 @@ transfer.unpackLimit:: When `fetch.unpackLimit` or `receive.unpackLimit` are not set, the value of this variable is used instead. The default value is 100. + +transfer.ipversion:: + Limit the network operations to the specified version of the transport + protocol. Can be specified as `4` to allow IPv4 only, `6` for IPv6, or + `all` to allow all protocols. + See also linkgit:git-fetch[1] options `--ipv4` and `--ipv6`. + The default value is `all` to allow all protocols. diff --git a/builtin/fetch.c b/builtin/fetch.c index 447d28ac29..da01c8f7b3 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -118,6 +118,17 @@ static int git_fetch_config(const char *k, const char *v, void *cb) return 0; } + if (!strcmp(k, "transfer.ipversion")) { + if (!strcmp(v, "all")) + ; + else if (!strcmp(v, "4")) + family = TRANSPORT_FAMILY_IPV4; + else if (!strcmp(v, "6")) + family = TRANSPORT_FAMILY_IPV6; + else + die(_("transfer.ipversion can be only 4, 6, or any")); + return 0; + } return git_default_config(k, v, cb); } -- 2.28.0.21.g178b32a6fd.dirty