completion: support completing non-ASCII pathnames
[gitweb.git] / contrib / completion / git-completion.bash
index a7570739454ac793430b7f0edb8ba229f3ff50d8..2a8fe2aa18e087adbcd80a3b17a6a774ababa979 100644 (file)
@@ -371,10 +371,12 @@ __gitcomp_file ()
 __git_ls_files_helper ()
 {
        if [ "$2" == "--committable" ]; then
-               __git -C "$1" diff-index --name-only --relative HEAD
+               __git -C "$1" -c core.quotePath=false diff-index \
+                       --name-only --relative HEAD
        else
                # NOTE: $2 is not quoted in order to support multiple options
-               __git -C "$1" ls-files --exclude-standard $2
+               __git -C "$1" -c core.quotePath=false ls-files \
+                       --exclude-standard $2
        fi
 }
 
@@ -387,7 +389,7 @@ __git_ls_files_helper ()
 #    slash.
 __git_index_files ()
 {
-       local root="${2-.}" file
+       local root="$2" file
 
        __git_ls_files_helper "$root" "$1" |
        while read -r file; do
@@ -398,6 +400,24 @@ __git_index_files ()
        done | sort | uniq
 }
 
+# __git_complete_index_file requires 1 argument:
+# 1: the options to pass to ls-file
+#
+# The exception is --committable, which finds the files appropriate commit.
+__git_complete_index_file ()
+{
+       local pfx="" cur_="$cur"
+
+       case "$cur_" in
+       ?*/*)
+               pfx="${cur_%/*}/"
+               cur_="${cur_##*/}"
+               ;;
+       esac
+
+       __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
+}
+
 # Lists branches from the local repository.
 # 1: A prefix to be added to each listed branch (optional).
 # 2: List only branches matching this word (optional; list all branches if
@@ -714,26 +734,6 @@ __git_complete_revlist_file ()
        esac
 }
 
-
-# __git_complete_index_file requires 1 argument:
-# 1: the options to pass to ls-file
-#
-# The exception is --committable, which finds the files appropriate commit.
-__git_complete_index_file ()
-{
-       local pfx="" cur_="$cur"
-
-       case "$cur_" in
-       ?*/*)
-               pfx="${cur_%/*}"
-               cur_="${cur_##*/}"
-               pfx="${pfx}/"
-               ;;
-       esac
-
-       __gitcomp_file "$(__git_index_files "$1" ${pfx:+"$pfx"})" "$pfx" "$cur_"
-}
-
 __git_complete_file ()
 {
        __git_complete_revlist_file