Browse Source

completion: support excluding refs

Allow completion of refs with a ^ prefix. This allows completion of
commands like 'git log HEAD ^origin/master'.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Chris Packham 9 years ago committed by Junio C Hamano
parent
commit
49416ad22a
  1. 7
      contrib/completion/git-completion.bash

7
contrib/completion/git-completion.bash

@ -338,7 +338,7 @@ __git_tags ()
__git_refs () __git_refs ()
{ {
local i hash dir="$(__gitdir "${1-}")" track="${2-}" local i hash dir="$(__gitdir "${1-}")" track="${2-}"
local format refs local format refs pfx
if [ -d "$dir" ]; then if [ -d "$dir" ]; then
case "$cur" in case "$cur" in
refs|refs/*) refs|refs/*)
@ -347,14 +347,15 @@ __git_refs ()
track="" track=""
;; ;;
*) *)
[[ "$cur" == ^* ]] && pfx="^"
for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do
if [ -e "$dir/$i" ]; then echo $i; fi if [ -e "$dir/$i" ]; then echo $pfx$i; fi
done done
format="refname:short" format="refname:short"
refs="refs/tags refs/heads refs/remotes" refs="refs/tags refs/heads refs/remotes"
;; ;;
esac esac
git --git-dir="$dir" for-each-ref --format="%($format)" \ git --git-dir="$dir" for-each-ref --format="$pfx%($format)" \
$refs $refs
if [ -n "$track" ]; then if [ -n "$track" ]; then
# employ the heuristic used by git checkout # employ the heuristic used by git checkout

Loading…
Cancel
Save