Skip to content

Commit

Permalink
Teach bash how to complete git-rebase.
Browse files Browse the repository at this point in the history
As git-rebase is a popular command bash should know how to complete
reference names and its long options.  We only support completions
which make sense given the current state of the repository, that
way users don't get shown --continue/--skip/--abort on the first
execution.

Also added support for long option --strategy to git-merge, as I
missed that option earlier and just noticed it while implementing
git-rebase.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Nov 27, 2006
1 parent 1273231 commit 61d926a
Showing 1 changed file with 32 additions and 6 deletions.
38 changes: 32 additions & 6 deletions contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -367,16 +367,16 @@ _git_merge ()
case "$cur" in
--*)
COMPREPLY=($(compgen -W "
--no-commit --no-summary --squash
--no-commit --no-summary --squash --strategy
" -- "$cur"))
return
esac
if [ $COMP_CWORD -gt 1 -a X-s = "X${COMP_WORDS[COMP_CWORD-1]}" ]
then
case "${COMP_WORDS[COMP_CWORD-1]}" in
-s|--strategy)
COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur"))
else
COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
fi
return
esac
COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
}

_git_merge_base ()
Expand Down Expand Up @@ -443,6 +443,30 @@ _git_push ()
esac
}

_git_rebase ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
if [ -d .dotest ]; then
COMPREPLY=($(compgen -W "
--continue --skip --abort
" -- "$cur"))
return
fi
case "$cur" in
--*)
COMPREPLY=($(compgen -W "
--onto --merge --strategy
" -- "$cur"))
return
esac
case "${COMP_WORDS[COMP_CWORD-1]}" in
-s|--strategy)
COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur"))
return
esac
COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
}

_git_reset ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
Expand Down Expand Up @@ -500,6 +524,7 @@ _git ()
name-rev) _git_name_rev ;;
pull) _git_pull ;;
push) _git_push ;;
rebase) _git_rebase ;;
reset) _git_reset ;;
show) _git_show ;;
show-branch) _git_log ;;
Expand Down Expand Up @@ -532,6 +557,7 @@ complete -o default -F _git_merge_base git-merge-base
complete -o default -F _git_name_rev git-name-rev
complete -o default -o nospace -F _git_pull git-pull
complete -o default -o nospace -F _git_push git-push
complete -o default -F _git_rebase git-rebase
complete -o default -F _git_reset git-reset
complete -o default -F _git_show git-show
complete -o default -o nospace -F _git_log git-show-branch
Expand Down

0 comments on commit 61d926a

Please sign in to comment.