completion: fix most spots not respecting 'git --git-dir=<path>'

The completion script already respects the path to the repository
specified on the command line most of the time, here we add the
necessary '--git-dir=$(__gitdir)' options to most of the places where
git was executed without it.  The exceptions where said option is not
added are the git invocations:

  - in __git_refs() which are non-trivial and will be the subject of
    the following patch,

  - getting the list of git commands, merge strategies and archive
    formats, because these are independent from the repository and
    thus don't need it, and

  - the 'git rev-parse --git-dir' in __gitdir() itself.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
SZEDER Gábor 2017-02-03 03:48:16 +01:00 коммит произвёл Junio C Hamano
Родитель a2f03b0ec8
Коммит 3bcb41f976
1 изменённых файлов: 7 добавлений и 5 удалений

Просмотреть файл

@ -283,11 +283,13 @@ __gitcomp_file ()
# argument, and using the options specified in the second argument.
__git_ls_files_helper ()
{
local dir="$(__gitdir)"
if [ "$2" == "--committable" ]; then
git -C "$1" diff-index --name-only --relative HEAD
git --git-dir="$dir" -C "$1" 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 --git-dir="$dir" -C "$1" ls-files --exclude-standard $2
fi 2>/dev/null
}
@ -408,7 +410,7 @@ __git_refs2 ()
__git_refs_remotes ()
{
local i hash
git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \
git --git-dir="$(__gitdir)" ls-remote "$1" 'refs/heads/*' 2>/dev/null | \
while read -r hash i; do
echo "$i:refs/remotes/$1/${i#refs/heads/}"
done
@ -1186,7 +1188,7 @@ _git_commit ()
return
esac
if git rev-parse --verify --quiet HEAD >/dev/null; then
if git --git-dir="$(__gitdir)" rev-parse --verify --quiet HEAD >/dev/null; then
__git_complete_index_file "--committable"
else
# This is the first commit
@ -1486,7 +1488,7 @@ _git_log ()
{
__git_has_doubledash && return
local g="$(git rev-parse --git-dir 2>/dev/null)"
local g="$(__gitdir)"
local merge=""
if [ -f "$g/MERGE_HEAD" ]; then
merge="--merge"