git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] config: option transfer.ipversion to set transport protocol version for network fetches

From
Jeff King <peff@peff.net>
Date
Sep 17, 2020, 00:48 UTC
Message-ID
<20200917004828.GA2442845@coredump.intra.peff.net>
In-Reply-To
<xmqq4knxuyfz.fsf@gitster.c.googlers.com>
On Wed, Sep 16, 2020 at 03:52:16PM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> >> Adding a command-line option for "all" is a good idea, but will probably
> >> mean needing to add the "unset" sentinel value I mentioned in the other
> >> email.
> >
> > Sorry, I do not quite follow.  I thought that assigning the
> > (misnamed --- see other mail) ALL to the "family" variable would be
> > sufficient?
> >
> >     enum transport_family {
> >             TRANSPORT_FAMILY_ALL = 0,
> >             TRANSPORT_FAMILY_IPV4,
> >             TRANSPORT_FAMILY_IPV6
> >     };
> 
> Ah, I see.  We want a way to tell "nobody has set it from the command
> line or the config" and "we were explicitly told to accept any"
> apart.
> 
> But wouldn't the usual "read config first and then override from the
> command line" handle that without "not yet set" value?  I thought we
> by default accept any.

It would, if each individual program does it in that order. But that means every caller of the transport code needs to be updated to handle the config. That might not be that bad (after all, they have to take --ipv6 etc, options, and I guess they'd need a new "any" option).

My suggestion elsewhere was to have an "unset" value, and then resolve it at the time-of-use, something like:

diff --git a/transport.c b/transport.c
index 43e24bf1e5..6414a847ae 100644
--- a/transport.c
+++ b/transport.c
@@ -248,6 +248,9 @@ static int connect_setup(struct transport *transport, int for_push)
 	if (data->conn)
 		return 0;
 
+	if (transport->family == TRANSPORT_FAMILY_UNSET)
+		transport->family = transport_family_config;
+
 	switch (transport->family) {
 	case TRANSPORT_FAMILY_ALL: break;
 	case TRANSPORT_FAMILY_IPV4: flags |= CONNECT_IPV4; break;

but I am happy either way as long as the code does the right thing.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 38 of 49 in “sub-fetches discard --ipv4|6 option”
  1. Alex RiesenSep 14, 2020
  2. Jeff KingSep 14, 2020
  3. Alex RiesenSep 15, 2020
  4. Pass --ipv4 and --ipv6 options to sub-fetches when fetching multiple remotes and submodulesAlex Riesen, Sep 15, 2020
  5. Junio C HamanoSep 15, 2020
  6. Alex RiesenSep 16, 2020
  7. Jeff KingSep 15, 2020
  8. Junio C HamanoSep 16, 2020
  9. Alex RiesenSep 16, 2020
  10. Jeff KingSep 15, 2020
  11. Alex RiesenSep 15, 2020
  12. Jeff KingSep 15, 2020
  13. Junio C HamanoSep 15, 2020
  14. Jeff KingSep 15, 2020
  15. Junio C HamanoSep 15, 2020
  16. Jeff KingSep 16, 2020
  17. Junio C HamanoSep 16, 2020
  18. Alex RiesenSep 15, 2020
  19. Jeff KingSep 16, 2020
  20. Alex RiesenSep 17, 2020
  21. Jeff KingSep 22, 2020
  22. config: option transfer.ipversion to set transport protocol version for network fetchesAlex Riesen, Sep 15, 2020
  23. Jeff KingSep 16, 2020
  24. Alex RiesenSep 17, 2020
  25. Config option to set the transport protocol version for network fetchesAlex Riesen, Sep 17, 2020
  26. Jeff KingSep 17, 2020
  27. Alex RiesenSep 17, 2020
  28. Jeff KingSep 17, 2020
  29. Alex RiesenSep 17, 2020
  30. Junio C HamanoDec 22, 2020
  31. Alex RiesenJan 7, 2021
  32. Alex RiesenSep 17, 2020
  33. Alex RiesenSep 17, 2020
  34. Junio C HamanoSep 16, 2020
  35. Jeff KingSep 16, 2020
  36. Junio C HamanoSep 16, 2020
  37. Junio C HamanoSep 16, 2020
  38. Jeff KingSep 17, 2020
  39. Junio C HamanoSep 17, 2020
  40. Junio C HamanoSep 16, 2020
  41. Alex RiesenSep 17, 2020
  42. Junio C HamanoSep 17, 2020
  43. Alex RiesenSep 18, 2020
  44. Junio C HamanoSep 18, 2020
  45. Alex RiesenSep 21, 2020
  46. Jeff KingSep 22, 2020
  47. Alex RiesenSep 17, 2020
  48. Alex RiesenSep 17, 2020
  49. Junio C HamanoSep 14, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.