[Bash-completion-devel] bash-completion now loads completions dynamically, so __git_ps1 is not defined when you open a shell

Kerrick Staley mail at kerrickstaley.com
Thu Mar 29 00:00:35 UTC 2012


On Wed, Mar 28, 2012 at 5:17 PM, Junio C Hamano <gitster at pobox.com> wrote:
> Sorry, I don't quite get it.  "newer verions" of what?
>
> To me, completion scripts have always been to be dot-sourced early, making
> sure inclusion happen before PS1 is used.  Did we change anything recently
> to break it????

bash-completion 1.99 (still a "beta", but Arch Linux now ships it)
will automatically source the git-completion.bash script when you type
git <tab>. The script is no longer sourced when you first open a
shell.

There are two main ways to fix this:
1) define __git_ps1 (and friends) in a different script, which will
get installed in /etc/profile.d (this is the "proper way")
2) require that git-completion.bash always be loaded in the beginning
instead of on-the-fly (which is how it works now now)

I can submit a patch implementing option (1) if needed.

This is a very minor issue, but some recommendation from upstream
would be nice so that distros know how to handle this.

On Wed, Mar 28, 2012 at 6:06 PM, Jonathan Nieder <jrnieder at gmail.com> wrote:
> Yes, I think so.  Do the release notes for version 2.0 of the
> /etc/bash_completion wrapper script mention this change?

I'm not sure, but the feature is definitely there. The branch
implementing this feature has been merged into the project's master
(see http://anonscm.debian.org/gitweb/?p=bash-completion/bash-completion.git;a=commit;h=b377dc5de84913b69efa325590e9d0bb97d02128).

-Kerrick



More information about the Bash-completion-devel mailing list