Bash completion support for remotes in .git/config.
Now that Git natively supports remote specifications within the config file such as: [remote "origin"] url = ... we should provide bash completion support "out of the box" for these remotes, just like we do for the .git/remotes directory. Also cleaned up the __git_aliases expansion to use the same form of querying and filtering repo-config as this saves two fork/execs in the middle of a user prompted completion. Finally also forced the variable 'word' to be local within __git_aliased_command. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
76c3eb51ed
commit
56fc25f21e
@ -59,12 +59,21 @@ __git_refs2 ()
|
|||||||
|
|
||||||
__git_remotes ()
|
__git_remotes ()
|
||||||
{
|
{
|
||||||
local i REVERTGLOB=$(shopt -p nullglob)
|
local i ngoff IFS=$'\n'
|
||||||
|
shopt -q nullglob || ngoff=1
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
for i in .git/remotes/*; do
|
for i in .git/remotes/*; do
|
||||||
echo ${i#.git/remotes/}
|
echo ${i#.git/remotes/}
|
||||||
done
|
done
|
||||||
$REVERTGLOB
|
[ "$ngoff" ] && shopt -u nullglob
|
||||||
|
for i in $(git repo-config --list); do
|
||||||
|
case "$i" in
|
||||||
|
remote.*.url=*)
|
||||||
|
i="${i#remote.}"
|
||||||
|
echo "${i/.url=*/}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
__git_complete_file ()
|
__git_complete_file ()
|
||||||
@ -103,13 +112,20 @@ __git_complete_file ()
|
|||||||
|
|
||||||
__git_aliases ()
|
__git_aliases ()
|
||||||
{
|
{
|
||||||
git repo-config --list | grep '^alias\.' \
|
local i IFS=$'\n'
|
||||||
| sed -e 's/^alias\.//' -e 's/=.*$//'
|
for i in $(git repo-config --list); do
|
||||||
|
case "$i" in
|
||||||
|
alias.*)
|
||||||
|
i="${i#alias.}"
|
||||||
|
echo "${i/=*/}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
__git_aliased_command ()
|
__git_aliased_command ()
|
||||||
{
|
{
|
||||||
local cmdline=$(git repo-config alias.$1)
|
local word cmdline=$(git repo-config --get "alias.$1")
|
||||||
for word in $cmdline; do
|
for word in $cmdline; do
|
||||||
if [ "${word##-*}" ]; then
|
if [ "${word##-*}" ]; then
|
||||||
echo $word
|
echo $word
|
||||||
|
Loading…
Reference in New Issue
Block a user