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

[PATCH 6/9] completion: query only refs/heads/ in __git_refs_remotes()

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

__git_refs_remotes() is used to provide completion for refspecs to set 'remote.*.fetch' config variables for branches on the given remote. So it's really only interested in refs under 'refs/heads/', but it queries the remote for all its refs and then filters out all refs outside of 'refs/heads/'.

Let 'git ls-remote' do the filtering.
Also remove the unused $cmd variable from __git_refs_remotes().
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
 contrib/completion/git-completion.bash |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index a8d3597e..dc1d5e90 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -650,17 +650,14 @@ __git_refs2 ()
 # __git_refs_remotes requires 1 argument (to pass to ls-remote)
 __git_refs_remotes ()
 {
-	local cmd i is_hash=y
-	for i in $(git ls-remote "$1" 2>/dev/null); do
-		case "$is_hash,$i" in
-		n,refs/heads/*)
+	local i is_hash=y
+	for i in $(git ls-remote "$1" 'refs/heads/*' 2>/dev/null); do
+		case "$is_hash" in
+		n)
 			is_hash=y
 			echo "$i:refs/remotes/$1/${i#refs/heads/}"
 			;;
-		y,*) is_hash=n ;;
-		n,*^{}) is_hash=y ;;
-		n,refs/tags/*) is_hash=y;;
-		n,*) is_hash=y; ;;
+		y) is_hash=n ;;
 		esac
 	done
 }
-- 
1.7.7.187.ga41de
Previous: SZEDER GáborNext: SZEDER Gábor
Message 13 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.