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

[PATCH v4 3/6] help: use early config when autocorrecting aliases

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jun 14, 2017, 11:35 UTC
Message-ID
<9ae04aedac595abdf9f24b61df983f1539761046.1497440104.git.johannes.schindelin@gmx.de>
In-Reply-To
<cover.1497440104.git.johannes.schindelin@gmx.de>

Git has this feature which suggests similar commands (including aliases) in case the user specified an unknown command.

This feature currently relies on a side effect of the way we expand aliases right now: when a command is not a builtin, we use the regular config machinery (meaning: discovering the .git/ directory and initializing global state such as the config cache) to see whether the command refers to an alias.

However, we will change the way aliases are expanded in the next commits, to use the early config instead. That means that the autocorrect feature can no longer discover the available aliases by looking at the config cache (because it has not yet been initialized).

So let's just use the early config machinery instead.

This is slightly less performant than the previous way, as the early config is used *twice*: once to see whether the command refers to an alias, and then to see what aliases are most similar. However, this is hardly a performance-critical code path, so performance is less important here.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 help.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/help.c b/help.c
index db7f3d79a01..b44c55ec2da 100644
--- a/help.c
+++ b/help.c
@@ -289,7 +289,7 @@ const char *help_unknown_cmd(const char *cmd)
 	memset(&other_cmds, 0, sizeof(other_cmds));
 	memset(&aliases, 0, sizeof(aliases));
 
-	git_config(git_unknown_cmd_config, NULL);
+	read_early_config(git_unknown_cmd_config, NULL);
 
 	load_command_list("git-", &main_cmds, &other_cmds);
 
-- 
2.13.1.windows.1.1.ga36e14b3aaa
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 3 of 10 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 14, 2017
  2. 1/6 discover_git_directory(): avoid setting invalid git_dirJohannes Schindelin, Jun 14, 2017
  3. 3/6 help: use early config when autocorrecting aliasesJohannes Schindelin, Jun 14, 2017
  4. 4/6 t1308: relax the test verifying that empty alias values are disallowedJohannes Schindelin, Jun 14, 2017
  5. 2/6 config: report correct line number upon errorJohannes Schindelin, Jun 14, 2017
  6. 5/6 t7006: demonstrate a problem with aliases in subdirectoriesJohannes Schindelin, Jun 14, 2017
  7. 6/6 Use the early config machinery to expand aliasesJohannes Schindelin, Jun 14, 2017
  8. Junio C HamanoJun 15, 2017
  9. Johannes SchindelinJun 15, 2017
  10. Jeff KingJun 15, 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.