Re: [PATCH 3/3] git abbref-ref: new porcelain for abbreviate_ref()
From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:45:23
Bert Wesarg [off-list ref] wrote:
This gives direct access to the abbreviate_ref() function. The operation
mode defaults to the core.warnambiguousrefs value, like the refname:short
format, but can be explicitly changed with the --{,no}-strict option.
The bash completion script utilizes this new command.And it slows down too, doesn't it? Now we are doing a fork per branch during completion. Yikes. Didn't you just post a series about making completion faster?
Junio, if this is not a porcelain, tell me.
IMHO its plumbing. Porcelain is used by a human. Plumbing is the bits needed to make human interfaces.
quoted hunk ↗ jump to hunk
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 93f0881..7f002c0 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash@@ -112,9 +112,9 @@ __git_ps1 () fi if [ -n "$1" ]; then - printf "$1" "${b##refs/heads/}$r" + printf "$1" "$(git abbrev-ref $b)$r" else - printf " (%s)" "${b##refs/heads/}$r" + printf " (%s)" "$(git abbrev-ref $b)$r" fi fi }@@ -162,7 +162,7 @@ __git_heads () case "$is_hash,$i" in y,*) is_hash=n ;; n,*^{}) is_hash=y ;; - n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;; + n,refs/heads/*) is_hash=y; echo "$(git abbrev-ref $i)" ;; n,*) is_hash=y; echo "$i" ;; esac done@@ -180,7 +180,7 @@ __git_tags () case "$is_hash,$i" in y,*) is_hash=n ;; n,*^{}) is_hash=y ;; - n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;; + n,refs/tags/*) is_hash=y; echo "$(git abbrev-ref $i)" ;; n,*) is_hash=y; echo "$i" ;; esac done@@ -199,9 +199,9 @@ __git_refs () case "$is_hash,$i" in y,*) is_hash=n ;; n,*^{}) is_hash=y ;; - n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;; - n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;; - n,refs/remotes/*) is_hash=y; echo "${i#refs/remotes/}" ;; + n,refs/tags/*) is_hash=y; echo "$(git abbrev-ref $i)" ;; + n,refs/heads/*) is_hash=y; echo "$(git abbrev-ref $i)" ;; + n,refs/remotes/*) is_hash=y; echo "$(git abbrev-ref $i)" ;; n,*) is_hash=y; echo "$i" ;; esac done@@ -222,7 +222,7 @@ __git_refs_remotes () case "$is_hash,$i" in n,refs/heads/*) is_hash=y - echo "$i:refs/remotes/$1/${i#refs/heads/}" + echo "$i:refs/remotes/$1/$(git abbrev-ref $i)" ;; y,*) is_hash=n ;; n,*^{}) is_hash=y ;;
-- Shawn.