Subject: Re: [RFC/PATCHv3] submodule update: allow custom update command

From: Chris Packham <[email-masked]>
Date: Wed, 03 Jul 2013 19:54:53 +1200

On 03/07/13 18:55, Jens Lehmann wrote:
> Am 03.07.2013 01:26, schrieb Chris Packham:
>> On Wed, Jul 3, 2013 at 4:56 AM, Jens Lehmann <[email-masked]> wrote:
>>> Am 02.07.2013 12:12, schrieb Chris Packham:
>>>> --- a/Documentation/git-submodule.txt
>>>> +++ b/Documentation/git-submodule.txt
>>>> @@ -159,7 +159,9 @@ update::
>>>>       This will make the submodules HEAD be detached unless `--rebase` or
>>>>       `--merge` is specified or the key `submodule.$name.update` is set to
>>>>       `rebase`, `merge` or `none`. `none` can be overridden by specifying
>>>> -     `--checkout`.
>>>> +     `--checkout`. Setting the key `submodule.$name.update` to `!command`
>>>> +     will cause `command` to be run. `command` can be any arbitrary shell
>>>> +     command that takes a single argument, namely the sha1 to update to.
>>>>  +
>>>>  If the submodule is not yet initialized, and you just want to use the
>>>>  setting as stored in .gitmodules, you can automatically initialize the
> 
> The above hunk is perfectly fine ...
> 
>>>> @@ -172,6 +174,7 @@ If `--force` is specified, the submodule will be checked out (using
>>>>  `git checkout --force` if appropriate), even if the commit specified in the
>>>>  index of the containing repository already matches the commit checked out in
>>>>  the submodule.
>>>> ++
>>>>
>>>>  summary::
>>>>       Show commit summary between the given commit (defaults to HEAD) and
> 
> ... but I don't understand the extra '+'-line added here.
> 
>>> I'm not sure this change is necessary ;-)
>>
>> Not necessary because it should be documented in
>> Documentation/config.txt instead, or not necessary because it's a
>> niche feature that doesn't need to be advertised?
> 
> Sorry for the confusion, I should have been more specific here.
> 

Ah that makes sense. It's left over from the '--exec' option in v1. Will
be cleaned up in v4.

On a related note should I be updating Documentation/config.txt as well?
Even if it's a statement that this feature exists refer to
git-submodule(1) for details.

>>>> diff --git a/git-submodule.sh b/git-submodule.sh
>>>> index eb58c8e..a7c2375 100755
>>>> --- a/git-submodule.sh
>>>> +++ b/git-submodule.sh
>>>> @@ -799,6 +799,12 @@ Maybe you want to use 'update --init'?")"
>>>>                               say_msg="$(eval_gettext "Submodule path '\$prefix\$sm_path': merged in '\$sha1'")"
>>>>                               must_die_on_failure=yes
>>>>                               ;;
>>>> +                     !*)
>>>> +                             command="${update_module#!}"
>>>> +                             die_msg="$(eval_gettext "Unable to exec '\$command \$sha1' in submodule path '\$prefix\$sm_path'")"
>>>
>>> Hmm, "Unable to exec" does not quite cut it, as the command was executed
>>> but returned an error, right? Maybe something like this:
>>>
>>>    Execution of '\$command \$sha1' failed in submodule  path '\$prefix\$sm_path'
>>>
>>
>> Will include in v4 once I write some tests.
> 
> Thanks.
>