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

[PATCH 8/9] completion: fast initial completion for config 'remote.*.fetch' value

From
SZEDER Gábor <szeder@ira.uka.de>
Date
Oct 8, 2011, 14:54 UTC
Message-ID
<1318085683-29830-9-git-send-email-szeder@ira.uka.de>
In-Reply-To
<1318085683-29830-1-git-send-email-szeder@ira.uka.de>

Refspecs for branches in a remote repository start with 'refs/heads/', so completing those refspecs with 'git config remote.origin.fetch <TAB>' always offers 'refs/heads/' first, because that's the unique part of the possible refspecs. But it does so only after querying the remote with 'git ls-remote', which can take a while when the request goes through some slower network to a remote server.

Don't waste the user's time and offer 'refs/heads/' right away for 'git config remote.origin.fetch <TAB>'.

The reason for putting 'refs/heads/' directly into COMPREPLY instead of using __gitcomp() is to avoid __gitcomp() adding a trailing space.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
 contrib/completion/git-completion.bash |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 658df3a7..d7151220 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1890,6 +1890,10 @@ _git_config ()
 	remote.*.fetch)
 		local remote="${prev#remote.}"
 		remote="${remote%.fetch}"
+		if [ -z "$cur" ]; then
+			COMPREPLY=("refs/heads/")
+			return
+		fi
 		__gitcomp_nl "$(__git_refs_remotes "$remote")"
 		return
 		;;
-- 
1.7.7.187.ga41de
Previous: SZEDER GáborNext: SZEDER Gábor
Message 15 of 16 in “ref completion optimizations, fixes, and cleanups”
  1. 0/9 ref completion optimizations, fixes, and cleanupsSZEDER Gábor, Oct 8, 2011
  2. 1/9 completion: document __gitcomp()SZEDER Gábor, Oct 8, 2011
  3. 2/9 completion: optimize refs completionSZEDER Gábor, Oct 8, 2011
  4. Junio C HamanoOct 13, 2011
  5. SZEDER GáborOct 13, 2011
  6. Junio C HamanoOct 13, 2011
  7. SZEDER GáborOct 14, 2011
  8. 2/9 completion: optimize refs completionSZEDER Gábor, Oct 15, 2011
  9. Junio C HamanoOct 16, 2011
  10. 3/9 completion: make refs completion consistent for local and remote reposSZEDER Gábor, Oct 8, 2011
  11. 4/9 completion: improve ls-remote output filtering in __git_refs()SZEDER Gábor, Oct 8, 2011
  12. 5/9 completion: support full refs from remote repositoriesSZEDER Gábor, Oct 8, 2011
  13. 6/9 completion: query only refs/heads/ in __git_refs_remotes()SZEDER Gábor, Oct 8, 2011
  14. 7/9 completion: improve ls-remote output filtering in __git_refs_remotes()SZEDER Gábor, Oct 8, 2011
  15. 8/9 completion: fast initial completion for config 'remote.*.fetch' valueSZEDER Gábor, Oct 8, 2011
  16. 9/9 completion: remove broken dead code from __git_heads() and __git_tags()SZEDER Gábor, Oct 8, 2011

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.