Subject: Re: [PATCH v3 1/1] completion: graduate out of contrib

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Fri, 16 Jul 2021 08:36:52 +0200

On Thu, Jul 15 2021, Felipe Contreras wrote:

> Ævar Arnfjörð Bjarmason wrote:
>> 
>> On Thu, Jul 15 2021, Ævar Arnfjörð Bjarmason wrote:
>> 
>> > On Wed, Jul 14 2021, Felipe Contreras wrote:
>> >> [...]
>> >> @@ -2399,7 +2399,7 @@ test_expect_success 'sourcing the completion script clears cached --options' '
>> >>  	verbose test -n "$__gitcomp_builtin_checkout" &&
>> >>  	__gitcomp_builtin notes_edit &&
>> >>  	verbose test -n "$__gitcomp_builtin_notes_edit" &&
>> >> -	. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" &&
>> >> +	. "$GIT_BUILD_DIR/extra/completion/git-completion.bash" &&
>> >>  	verbose test -z "$__gitcomp_builtin_checkout" &&
>> >>  	verbose test -z "$__gitcomp_builtin_notes_edit"
>> >>  '
>> >>
>> >> diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
>> >> index bbd513bab0..784e523fd4 100755
>> >> --- a/t/t9903-bash-prompt.sh
>> >> +++ b/t/t9903-bash-prompt.sh
>> >> @@ -10,7 +10,7 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
>> >>  
>> >>  . ./lib-bash.sh
>> >>  
>> >> -. "$GIT_BUILD_DIR/contrib/completion/git-prompt.sh"
>> >> +. "$GIT_BUILD_DIR/extra/completion/git-prompt.sh"
>> >>  
>> >>  actual="$TRASH_DIRECTORY/actual"
>> >>  c_red='\\[\\e[31m\\]'
>> >
>> > It's more of a "for bonus points", but a nic way to round-trip this
>> > would be to make this work with GIT_TEST_INSTALLED.
>> >
>> > I.e. source these relative to GIT_EXEC_PATH, not $GIT_BUILD_DIR, I think
>> > that just sourcing them as e.g.:
>> >
>> >     . git-completion.bash
>> >
>> > But the GIT_TEST_INSTALLED case is tricker, maybe we'd need to add a
>> > "git --share-path" :(
>> 
>> I forgot to include this not-working patch, i.e. I've got no idea what
>> the "something" should be other than the harder thing of compiling
>> "sharedir" into git and making "git --share-path" work.
>
> I don't think there's a "something" that would make sense.
>
> It would be something like '/opt/git/bin/completion'?

I think more importantly if they're going to be "first-class" components
that we have some native way of getting them to the user.

I.e. once you install git being able to load them in your shell as:

    . git-path
    . git-completion

Or whatever, which means either putting them in $PATH (i.e. we'd drop
them in bin/ along with the non-dashed-built-ins like git-upload-pack
etc.), or something like:

    . "$(git --completion-path)"/bash
    . "$(git --completion-path)"/zsh

Or maybe:

    . "$(git --extras-path)"/completion/bash.sh
    . "$(git --extras-path)"/prompt.sh

?