Merge branch 'tk/doc-filter-branch'
[gitweb.git] / contrib / completion / git-completion.bash
index c8452fb163c6bf75f01ba8b06ded2b8d82143e21..93eba467502282db2697e1cf6c93a6909d35ee5c 100644 (file)
@@ -299,9 +299,12 @@ __git_index_file_list_filter ()
 # the second argument.
 __git_ls_files_helper ()
 {
-       # NOTE: $2 is not quoted in order to support multiple options
-       cd "$1" && git ls-files --exclude-standard $2
-} 2>/dev/null
+       (
+               test -n "${CDPATH+set}" && unset CDPATH
+               # NOTE: $2 is not quoted in order to support multiple options
+               cd "$1" && git ls-files --exclude-standard $2
+       ) 2>/dev/null
+}
 
 
 # Execute git diff-index, returning paths relative to the directory
@@ -309,8 +312,11 @@ __git_ls_files_helper ()
 # specified in the second argument.
 __git_diff_index_helper ()
 {
-       cd "$1" && git diff-index --name-only --relative "$2"
-} 2>/dev/null
+       (
+               test -n "${CDPATH+set}" && unset CDPATH
+               cd "$1" && git diff-index --name-only --relative "$2"
+       ) 2>/dev/null
+}
 
 # __git_index_files accepts 1 or 2 arguments:
 # 1: Options to pass to ls-files (required).
@@ -1232,6 +1238,8 @@ _git_describe ()
        __gitcomp_nl "$(__git_refs)"
 }
 
+__git_diff_algorithms="myers minimal patience histogram"
+
 __git_diff_common_options="--stat --numstat --shortstat --summary
                        --patch-with-stat --name-only --name-status --color
                        --no-color --color-words --no-renames --check
@@ -1242,10 +1250,11 @@ __git_diff_common_options="--stat --numstat --shortstat --summary
                        --no-ext-diff
                        --no-prefix --src-prefix= --dst-prefix=
                        --inter-hunk-context=
-                       --patience
+                       --patience --histogram --minimal
                        --raw
                        --dirstat --dirstat= --dirstat-by-file
                        --dirstat-by-file= --cumulative
+                       --diff-algorithm=
 "
 
 _git_diff ()
@@ -1253,6 +1262,10 @@ _git_diff ()
        __git_has_doubledash && return
 
        case "$cur" in
+       --diff-algorithm=*)
+               __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
+               return
+               ;;
        --*)
                __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
                        --base --ours --theirs --no-index
@@ -1779,7 +1792,7 @@ __git_config_get_set_variables ()
        while [ $c -gt 1 ]; do
                word="${words[c]}"
                case "$word" in
-               --global|--system|--file=*)
+               --system|--global|--local|--file=*)
                        config_file="$word"
                        break
                        ;;
@@ -1885,7 +1898,7 @@ _git_config ()
        case "$cur" in
        --*)
                __gitcomp "
-                       --global --system --file=
+                       --system --global --local --file=
                        --list --replace-all
                        --get --get-all --get-regexp
                        --add --unset --unset-all
@@ -2058,6 +2071,7 @@ _git_config ()
                diff.suppressBlankEmpty
                diff.tool
                diff.wordRegex
+               diff.algorithm
                difftool.
                difftool.prompt
                fetch.recurseSubmodules
@@ -2331,6 +2345,10 @@ _git_show ()
                        " "" "${cur#*=}"
                return
                ;;
+       --diff-algorithm=*)
+               __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
+               return
+               ;;
        --*)
                __gitcomp "--pretty= --format= --abbrev-commit --oneline
                        $__git_diff_common_options