Re: How to setup bash completion for alias of git command
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jan 20, 2013, 11:14 UTC
- Message-ID
- <20130120111424.GG16339@elie.Belkin>
- In-Reply-To
- <CACSwcnQu8Rx83mcGYR6NGzEhoreNR6DfiK876LF7pa9PGm30JA@mail.gmail.com>
Hi Ping,
Ping Yin wrote:
Show 10 quoted lines
> Following setup works for me in ubuntu (10.04,11.04) for a long time > > alias gtlg='git log' > complete -o default -o nospace -F _git_log gtlg > > However, in debian (testing, wheezy), it doesn't work > > $ gtlg or<TAB> > gtlg or-bash: [: 1: unary operator expected > -bash: [: 1: unary operator expected
Yes, I can reproduce this. "git bisect" tells me it was introduced by v1.7.6-rc0~65^2~4 (completion: remove unnecessary _get_comp_words_by_ref() invocations, 2011-04-28). Since then, Felipe has done work to make reusing subcommand completion easy again, so you can do
__git_complete gtlg _git_log
One complication: on some systems, including Ubuntu 13.04, git's bash completion script is installed to
/usr/share/bash-completion/completions/git
and sourced on the fly when completing commands starting with "git" instead of right away from /etc/bash_completion. On these systems, the "__git_complete" function would not be usable right away from your .bashrc file. I think we should fix this, for example by moving the function to a separate
$(git --exec-path)/git-bashrc-functions
library.
Thanks for reporting, Jonathan