summaryrefslogtreecommitdiff
path: root/contrib/completion
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2006-11-27 08:40:47 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-11-27 20:08:58 (GMT)
commit4ad91321ee95598c2488ab5e39afec13575d4e3f (patch)
treef3b68f2465ffd409307e7e2aa5d815ab80023b1a /contrib/completion
parentfde97d8ac63efa466dd48436d2178bd364b846de (diff)
downloadgit-4ad91321ee95598c2488ab5e39afec13575d4e3f.zip
git-4ad91321ee95598c2488ab5e39afec13575d4e3f.tar.gz
git-4ad91321ee95598c2488ab5e39afec13575d4e3f.tar.bz2
Teach git-completion.bash how to complete git-merge.
Now that git-merge is high-level Porcelain users are going to expect to be able to use it from the command line, in which case we really should also be able to complete ref names as parameters. I'm also including completion support for the merge strategies that are supported by git-merge.sh, should the user wish to use a different strategy than their default. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'contrib/completion')
-rwxr-xr-xcontrib/completion/git-completion.bash30
1 files changed, 30 insertions, 0 deletions
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index a43a177..28bd0e3 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -81,6 +81,16 @@ __git_remotes ()
done
}
+__git_merge_strategies ()
+{
+ sed -n "/^all_strategies='/{
+ s/^all_strategies='//
+ s/'//
+ p
+ q
+ }" "$(git --exec-path)/git-merge"
+}
+
__git_complete_file ()
{
local pfx ls ref cur="${COMP_WORDS[COMP_CWORD]}"
@@ -240,6 +250,24 @@ _git_log ()
esac
}
+_git_merge ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ case "$cur" in
+ --*)
+ COMPREPLY=($(compgen -W "
+ --no-commit --no-summary --squash
+ " -- "$cur"))
+ return
+ esac
+ if [ $COMP_CWORD -gt 1 -a X-s = "X${COMP_WORDS[COMP_CWORD-1]}" ]
+ then
+ COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur"))
+ else
+ COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ fi
+}
+
_git_merge_base ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -348,6 +376,7 @@ _git ()
log) _git_log ;;
ls-remote) _git_ls_remote ;;
ls-tree) _git_ls_tree ;;
+ merge) _git_merge;;
merge-base) _git_merge_base ;;
pull) _git_pull ;;
push) _git_push ;;
@@ -376,6 +405,7 @@ complete -o default -o nospace -F _git_fetch git-fetch
complete -o default -o nospace -F _git_log git-log
complete -o default -F _git_ls_remote git-ls-remote
complete -o default -o nospace -F _git_ls_tree git-ls-tree
+complete -o default -F _git_merge git-merge
complete -o default -F _git_merge_base git-merge-base
complete -o default -o nospace -F _git_pull git-pull
complete -o default -o nospace -F _git_push git-push