On Fri, Feb 5, 2016 at 12:33 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 27 quoted lines
> Stefan Beller wrote:
>> On Thu, Feb 4, 2016 at 4:59 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
>>> Stefan Beller wrote:
>
>>>> +++ b/submodule-config.h
>>>> @@ -14,6 +14,7 @@ struct submodule {
>>>> + const char *update;
>>>
>>> gitmodules(5) tells me the only allowed values are checkout, rebase,
>>> merge, and none. I wouldn't know at a glance how to match against
>>> those in calling code. Can this be an enum?
>>
>> "Note that the !command form is intentionally ignored here for
>> security reasons."
>>
>> However you can overwrite the update field in .git/config to be "! [foo]",
>> which we also need to support, so let's keep it a string for now?
>
> I had forgotten about "!command". I think making it a string makes
> the field hard to use: how do I determine whether it was checkout,
> rebase, merge, custom, or none? Are they case-sensitive? Am I
> supposed to strip whitespace?
>
> One possibility would be to have an enum and a string:
>
> enum submodule_update_type update;
> const char *update_command;