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

Re: [PATCH v3 6/6] Use the early config machinery to expand aliases

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 13, 2017, 16:21 UTC
Message-ID
<xmqqk24f97ud.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<822765b002488f03523bf440097492be3c14931a.1497355444.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
> Instead of discovering the .git/ directory, read the config and then
> trying to painstakingly reset all the global state if we did not find a
> matching alias, let's use the early config machinery instead.

s/read/&ing/, I think. My reading hiccupped while trying to figure out what two alternative approaches are being compared.

Show 7 quoted lines
> It may look like unnecessary work to discover the .git/ directory in the
> early config machinery and then call setup_git_directory_gently() in the
> case of a shell alias, repeating the very same discovery *again*.
> However, we have to do this as the early config machinery takes pains
> *not* to touch any global state, while shell aliases expect a possibly
> changed working directory and at least the GIT_PREFIX and GIT_DIR
> variables to be set.
Makes sense.  Nicely explained.
> Also, one might be tempted to streamline the code in alias_lookup() to
> *not* use a strbuf for the key. However, if the config reports an error,
> it is far superior to tell the user that the `alias.xyz` key had a
> problem than to claim that it was the `xyz` key.

The mention of "streamline" is puzzling to me. When we are trying "git xyz", "alias.xyz" is the key we would look up, not "xyz"; it is not clear to anybody who didn't read the discussion on v2 (which includes the readers of "git log" in a few months) what kind of flawed streamlining could look up "xyz" and result in a bad configuration reported on it.

>  alias.c          | 31 ++++++++++++++++++++++++-------
>  git.c            | 55 ++++---------------------------------------------------
>  t/t7006-pager.sh |  2 +-
>  3 files changed, 29 insertions(+), 59 deletions(-)
Happy to see the deletion of all the save/restore-env stuff.

Except for the puzzlement in one paragraph in the log, looks very good. Thanks for a pleasant reading.

Previous: Johannes SchindelinNext: Jeff King
Message 8 of 15 in “Avoid problem where git_dir is set after alias expansion”
  1. 0/6 Avoid problem where git_dir is set after alias expansionJohannes Schindelin, Jun 13, 2017
  2. 1/6 discover_git_directory(): avoid setting invalid git_dirJohannes Schindelin, Jun 13, 2017
  3. 3/6 help: use early config when autocorrecting aliasesJohannes Schindelin, Jun 13, 2017
  4. 2/6 config: report correct line number upon errorJohannes Schindelin, Jun 13, 2017
  5. 4/6 t1308: relax the test verifying that empty alias values are disallowedJohannes Schindelin, Jun 13, 2017
  6. 5/6 t7006: demonstrate a problem with aliases in subdirectoriesJohannes Schindelin, Jun 13, 2017
  7. 6/6 Use the early config machinery to expand aliasesJohannes Schindelin, Jun 13, 2017
  8. Junio C HamanoJun 13, 2017
  9. Jeff KingJun 14, 2017
  10. Johannes SchindelinJun 14, 2017
  11. Johannes SchindelinJun 14, 2017
  12. Brandon WilliamsJun 13, 2017
  13. Jeff KingJun 14, 2017
  14. Johannes SchindelinJun 14, 2017
  15. Brandon WilliamsJun 14, 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.