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

Re: [PATCH v6 1/1] config: add conditional include

From
Jeff King <peff@peff.net>
Date
Feb 26, 2017, 06:12 UTC
Message-ID
<20170226061220.nizc4xeucx6ks6vq@sigill.intra.peff.net>
In-Reply-To
<20170224131425.32409-4-pclouds@gmail.com>
On Fri, Feb 24, 2017 at 08:14:25PM +0700, Nguyễn Thái Ngọc Duy wrote:
Show 15 quoted lines
> +static int include_condition_is_true(const char *cond, size_t cond_len)
> +{
> +	/* no condition (i.e., "include.path") is always true */
> +	if (!cond)
> +		return 1;
> +
> +	if (skip_prefix_mem(cond, cond_len, "gitdir:", &cond, &cond_len))
> +		return include_by_gitdir(cond, cond_len, 0);
> +	else if (skip_prefix_mem(cond, cond_len, "gitdir/i:", &cond, &cond_len))
> +		return include_by_gitdir(cond, cond_len, 1);
> +
> +	error(_("unrecognized include condition: %.*s"), (int)cond_len, cond);
> +	/* unknown conditionals are always false */
> +	return 0;
> +}

This "error()" is a nice warning to people who have misspelled the condition (or are surprised that an old version does not respect their condition). But it seems out of place with the rest of the compatibility strategy, which is to quietly ignore include types we don't understand.

For example, if your patch ships in v2.13 and we add the "foo:" condition in v2.14, then with config like:

  [includeif "foo:bar"]
  path = whatever
you get:
  v2.12: silently ignore
  v2.13: loudly ignore
  v2.14: works
which seems odd.

If we do keep it, it should probably be warning(). I would expect "error:" to indicate that some requested operation could not be completed, but this is just "by the way, I ignored this garbage".

-Peff
PS I know we try to avoid dashes in the section names, but "includeIf"
   and "includeif" just look really ugly to me. Maybe it is just me,
   though.
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 21 of 39 in “Conditional config include”
  1. 0/1 Conditional config includeNguyễn Thái Ngọc Duy, Feb 23, 2017
  2. 1/1 config: add conditional includeNguyễn Thái Ngọc Duy, Feb 23, 2017
  3. Junio C HamanoFeb 23, 2017
  4. Duy NguyenFeb 24, 2017
  5. Junio C HamanoFeb 24, 2017
  6. Jeff KingFeb 26, 2017
  7. Junio C HamanoFeb 27, 2017
  8. Stefan BellerMar 6, 2017
  9. Jeff KingMar 7, 2017
  10. Stefan BellerMar 7, 2017
  11. 0/1 Conditional config includeNguyễn Thái Ngọc Duy, Feb 24, 2017
  12. 1/1 config: add conditional includeNguyễn Thái Ngọc Duy, Feb 24, 2017
  13. Junio C HamanoFeb 24, 2017
  14. Ramsay JonesFeb 24, 2017
  15. Philip OakleyFeb 24, 2017
  16. Duy NguyenFeb 26, 2017
  17. Philip OakleyFeb 26, 2017
  18. 0/1 Conditional config includeNguyễn Thái Ngọc Duy, Feb 24, 2017
  19. Duy NguyenFeb 24, 2017
  20. 1/1 config: add conditional includeNguyễn Thái Ngọc Duy, Feb 24, 2017
  21. Jeff KingFeb 26, 2017
  22. 0/3 Conditional config includeNguyễn Thái Ngọc Duy, Mar 1, 2017
  23. 1/3 config.txt: clarify multiple key values in include.pathNguyễn Thái Ngọc Duy, Mar 1, 2017
  24. Junio C HamanoMar 1, 2017
  25. 2/3 config.txt: reflow the second include.path paragraphNguyễn Thái Ngọc Duy, Mar 1, 2017
  26. 3/3 config: add conditional includeNguyễn Thái Ngọc Duy, Mar 1, 2017
  27. Ramsay JonesMar 1, 2017
  28. Junio C HamanoMar 1, 2017
  29. Jeff KingMar 3, 2017
  30. Junio C HamanoMar 3, 2017
  31. Jeff KingMar 3, 2017
  32. Junio C HamanoMar 1, 2017
  33. Jeff KingMar 3, 2017
  34. Duy NguyenMar 3, 2017
  35. Junio C HamanoMar 3, 2017
  36. Junio C HamanoMar 3, 2017
  37. Junio C HamanoMar 3, 2017
  38. Jeff KingMar 3, 2017
  39. Junio C HamanoMar 3, 2017

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.