about summary refs log tree commit diff
path: root/Completion/Unix/Command/_git
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2014-01-27 21:54:13 -0800
committerBarton E. Schaefer <schaefer@zsh.org>2014-01-27 21:54:13 -0800
commita2098b0b26b47917cc725b387c63d75dfe0098f2 (patch)
treefa3b9bdc1c9ec40fc89042766f0a7932eb7d1f0c /Completion/Unix/Command/_git
parenta0c9da72f2625ac79648add48262532ddff2166d (diff)
downloadzsh-a2098b0b26b47917cc725b387c63d75dfe0098f2.tar.gz
zsh-a2098b0b26b47917cc725b387c63d75dfe0098f2.tar.xz
zsh-a2098b0b26b47917cc725b387c63d75dfe0098f2.zip
users/18368: compromise to restore partial path completion inadvertently removed by 31159
Diffstat (limited to 'Completion/Unix/Command/_git')
-rw-r--r--Completion/Unix/Command/_git8
1 files changed, 8 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 43a01d9ff..c09f2555a 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -5683,9 +5683,17 @@ __git_files () {
   # TODO: --directory should probably be added to $opts when --others is given.
 
   local pref=$gitcdup$gitprefix$PREFIX
+
+  # First allow ls-files to pattern-match in case of remote repository
   files=(${(0)"$(_call_program files git ls-files -z --exclude-standard $opts -- ${pref:+$pref\\\*} 2>/dev/null)"})
   __git_command_successful $pipestatus || return
 
+  # If ls-files succeeded but returned nothing, try again with no pattern
+  if [[ -z "$files" && -n "$pref" ]]; then
+    files=(${(0)"$(_call_program files git ls-files -z --exclude-standard $opts -- 2>/dev/null)"})
+    __git_command_successful $pipestatus || return
+  fi
+
 #  _wanted $tag expl $description _files -g '{'${(j:,:)files}'}' $compadd_opts -
   _wanted $tag expl $description _multi_parts -f $compadd_opts - / files
 }