about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Unix/Command/_git6
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e5bc3421a..150659968 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-08-18  Clint Adams  <clint@zsh.org>
+
+	* 25475: Completion/Unix/Command/_git: determine heads, tags,
+	and branches through git for-each-ref instead of git tag and
+	git branch.
+
 2008-08-17  Clint Adams  <clint@zsh.org>
 
 	* 25469: Completion/Unix/Command/_git: assorted changes
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index f19d5d120..9045479f1 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -2966,7 +2966,7 @@ __git_heads () {
   local expl
   declare -a branch_names
 
-  branch_names=(${${(f)"$(_call_program heads git branch --no-color -a 2>/dev/null)"}#[* ] })
+  branch_names=(${${(f)"$(_call_program headrefs git for-each-ref --format='%(refname)' refs/heads refs/remotes 2>/dev/null)"}#refs/(heads|remotes)/})
   __git_command_successful || return
 
   _wanted heads expl branch-name compadd $* - $branch_names HEAD
@@ -2977,7 +2977,7 @@ __git_tags () {
   local expl
   declare -a tag_names
 
-  tag_names=(${${(f)"$(_call_program tags git tag -l 2>/dev/null)"}#[* ] })
+  tag_names=(${${(f)"$(_call_program tagrefs git for-each-ref --format='%(refname)' refs/tags 2>/dev/null)"}#refs/tags/})
   __git_command_successful || return
 
   _wanted tags expl tag-name compadd $* - $tag_names
@@ -3030,7 +3030,7 @@ __git_branch_names () {
   local expl
   declare -a branch_names
 
-  branch_names=(${${(f)"$(_call_program branch-names git branch --no-color 2>/dev/null)"}#[* ] })
+  branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='%(refname)' refs/heads 2>/dev/null)"}#refs/heads/})
   __git_command_successful || return
 
   _wanted branch-names expl branch-name compadd $* - $branch_names