From: "Shawn O. Pearce" <spearce@spearce.org>
To: SZEDER GGGbor <szeder@ira.uka.de>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] bash: complete full refs
Date: Thu, 27 Nov 2008 16:51:36 -0800 [thread overview]
Message-ID: <20081128005136.GE23984@spearce.org> (raw)
In-Reply-To: <20081128004638.GA6854@neumann>
SZEDER GGGbor <szeder@ira.uka.de> wrote:
> Sometimes it's handy to complete full refs, e.g. the user has some
> refs outside of refs/{heads,remotes,tags} or the user wants to
> complete some git command's special refs (like 'git show
> refs/bisect/bad').
...
> On Thu, Nov 27, 2008 at 01:29:38PM -0800, Shawn O. Pearce wrote:
> > I wonder if the pattern shouldn't be:
> >
> > refs|refs/*)
> >
> > to reduce the risk of matching "refs-" and trying to do a full ref
> > match instead of a short ref match.
> Good point. Adjusted the code and commit message accordingly.
Thanks.
Acked-by: Shawn O. Pearce <spearce@spearce.org>
> contrib/completion/git-completion.bash | 19 +++++++++++++++----
> 1 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 0ee071b..244ed41 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -188,11 +188,22 @@ __git_tags ()
>
> __git_refs ()
> {
> - local cmd i is_hash=y dir="$(__gitdir "$1")"
> + local i is_hash=y dir="$(__gitdir "$1")"
> + local cur="${COMP_WORDS[COMP_CWORD]}" format refs
> if [ -d "$dir" ]; then
> - if [ -e "$dir/HEAD" ]; then echo HEAD; fi
> - git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
> - refs/tags refs/heads refs/remotes
> + case "$cur" in
> + refs|refs/*)
> + format="refname"
> + refs="${cur%/*}"
> + ;;
> + *)
> + if [ -e "$dir/HEAD" ]; then echo HEAD; fi
> + format="refname:short"
> + refs="refs/tags refs/heads refs/remotes"
> + ;;
> + esac
> + git --git-dir="$dir" for-each-ref --format="%($format)" \
> + $refs
> return
> fi
> for i in $(git ls-remote "$dir" 2>/dev/null); do
> --
> 1.6.0.4.814.gfe502
>
--
Shawn.
prev parent reply other threads:[~2008-11-28 0:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-27 13:35 [PATCH] bash: complete full refs SZEDER Gábor
2008-11-27 21:29 ` Shawn O. Pearce
2008-11-28 0:46 ` SZEDER Gábor
2008-11-28 0:51 ` Shawn O. Pearce [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081128005136.GE23984@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=szeder@ira.uka.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox