Junio C Hamano wrote:
I am OK with introducing git_ps1 while keeping __git_ps1 as an equivalent
and declare that git_$anything will be the surface interface for end users
to *use* the machinery we provide, though.
The problem is that completion scripts are often included implicitly
in .profile through the bash completion machinery. Users do not have
to explicitly ask for them, so there is no reason for users to expect
that the function name "more_cowbell" is dangerous to use in .profile
because some day the completion script for the "more" command will
start using it.
Because of these considerations, the convention is that every
identifier provided by a completion script, including public ones,
starts with an underscore.