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

Re: [PATCH 1/2] docs: add a basic description of the config API

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 8, 2012, 06:40 UTC
Message-ID
<7vmx8tzv3l.fsf@alter.siamese.dyndns.org>
In-Reply-To
<CACsJy8AU3ZA1=Q3vahhP6Nr=FZNKd7oRJ04mtKVs+uvNqJeVaw@mail.gmail.com>
Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:
Show 17 quoted lines
>>> The "1 means I understood this" convention is used by userdiff_config. I
>>> don't like that it is unlike every other config callback,...
>>> Looking at the code again, though, ...
>>> Hmm. Yeah. The userdiff calling convention dates back to late 2008....
>>> So I think we could go back and simplify the userdiff_config code now.
>>
>> I remembered where I saw the new "offender"; it was nd/columns
>> topic (Cc'ing Nguyễn).
>
> nd/columns does use "1" convention in git_column_config(), but the
> direct config callback function does not return 1 to config machinery.
> All call sites follow this pattern:
>
> int ret = git_column_config(key, var, "command", &colopts);
> if (ret <= 0) return ret;
>
> I think it's ok.
I too think this should be acceptable, but that is not the point.

Your excuse that "the toplevel callback in my callchain never returns 1, so overall the nd/columns series is ok" just muddies the water. It means if later somebody wanted to use inner callback functions you use from the git_column_config() callchain chain as a toplevel callback for whatever reason, that will violate the "0 for success, or -1 for error" convention. More importantly, if somebody wants to turn a top-level callback that currently returns 0 into a sub callback used by his callback callchain, he cannot change that existing callback to return 1 to tell him to short circuit, because for other callers returning 1 would be a violation.

What I was getting at is that we probably should officially declare that returning 1 to signal success is perfectly acceptable (and it probably should mean the caller who called the callback function as a sub callback should return immediately, taking it as a signal that the key has already been handled), as the primary purpose of this thread to discuss Peff's patch is to write these rules down.

Of course, all that relies on the audit of the git_config() machinery. I think it is written to accept non-negative as success, and that is why I said "I too think this should be acceptable" in the first place.

Previous: Nguyen Thai Ngoc DuyNext: Nguyen Thai Ngoc Duy
Message 9 of 16 in “config includes 3: revenge of the killer includes”
  1. 0/2 config includes 3: revenge of the killer includesJeff King, Feb 6, 2012
  2. 1/2 docs: add a basic description of the config APIJeff King, Feb 6, 2012
  3. Junio C HamanoFeb 6, 2012
  4. Jeff KingFeb 7, 2012
  5. Jeff KingFeb 7, 2012
  6. Junio C HamanoFeb 7, 2012
  7. Junio C HamanoFeb 7, 2012
  8. Nguyen Thai Ngoc DuyFeb 8, 2012
  9. Junio C HamanoFeb 8, 2012
  10. Nguyen Thai Ngoc DuyFeb 8, 2012
  11. Jeff KingFeb 8, 2012
  12. Jeff KingFeb 8, 2012
  13. Jeff KingFeb 7, 2012
  14. 2/2 config: add include directiveJeff King, Feb 6, 2012
  15. Junio C HamanoFeb 6, 2012
  16. Jeff KingFeb 7, 2012

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.