threads / discuss / 7235

Support for config wildcards

Subject: Support for config wildcards

## tl;dr

4 messages between Mar 13, 2007 and Mar 13, 2007.

replies: 3people: 2as markdown or json

Bill Lear· Mar 13, 2007, 16:47 UTC · lore

I would like to use our update hook to send email to recipients based on a branch name pattern. For example, the "abc" team would get email for all updates to branches that start with the word "abc".

I would like to write something like this in the config file:
[hooks.mail.recipients]
        xyz.pickle = me, you, betty-sue
        xyz* = joe, jaya, julie
        abc* = mark, nancy, svetlana
        taug* = sridhar, pete, joe
        * = me, you, big-boss

Then, in the update hook, do something like this (very pseudo-code-ish):

    for key, value in $(git config --get-regexp hooks.mail.recipients*); do
        key=${key#hooks.mail.recipients}
        if $(matches $key $branch); then
            recipients=$value
            break
        fi
    done

Which would allow me to change the mailing list recipients based on the branch without having to update the update hook each time.

But, apparently at least the '*' and '.' characters are not allowed as keys, and I can't seem to escape them.

Is there a way to do this sort of thing that I am missing?
Bill
Junio C Hamano· Mar 13, 2007, 17:03 UTC · re: Bill Lear · lore

Re: Support for config wildcards

Bill Lear <rael@zopyra.com> writes:
> Is there a way to do this sort of thing that I am missing?

I think the way the config is designed is to place arbitrary values as values not variable names.

Perhaps...
	[mymailhook "everything"]
        	recipients = me
                branch = "*"
	[mymailhook "all but xyz"]
        	recipients = alice bob charlie
                branch = "*"
                branch = "!xyz"
Bill Lear· Mar 13, 2007, 18:10 UTC · re: Junio C Hamano · lore

Re: Support for config wildcards

On Tuesday, March 13, 2007 at 10:03:18 (-0700) Junio C Hamano writes:
Show 17 quoted lines
>Bill Lear <rael@zopyra.com> writes:
>
>> Is there a way to do this sort of thing that I am missing?
>
>I think the way the config is designed is to place arbitrary
>values as values not variable names.
>
>Perhaps...
>
>	[mymailhook "everything"]
>        	recipients = me
>               branch = "*"
>
>	[mymailhook "all but xyz"]
>        	recipients = alice bob charlie
>               branch = "*"
>               branch = "!xyz"
Hmm, so in my example, if I had "abc" and "xyz"-specific lists:
	[mymailhook "abc"]
        	recipients = jim bob janet
                branch = "abc*"
	[mymailhook "xyz"]
        	recipients = alice bob charlie
                branch = "xyz*"
	[mymailhook "everything"]
               recipients = me
               branch = "*"

Then, I might, in the update hook, do this, given a branch for which to find the recipients ("to", below):

for key, pattern in $(git-config --get-regexp 'mymailhook.*.branch'); do
    label=${key#mailhook.}
    label=${label%.branch}
    if $(matches $pattern $branch); then
       to += $(git-config --get-regexp "mymailhook.${label}.recipients")
    fi
done

But that doesn't work for your example "all but xyz". I guess in that case, I would need to check both branch patterns and if one did not match, then I would reject it and not add to the recipient list.

Was that basically what you had in mind?
Bill
Junio C Hamano· Mar 13, 2007, 19:50 UTC · re: Bill Lear · lore

Re: Support for config wildcards

Bill Lear <rael@zopyra.com> writes:
Show 5 quoted lines
> But that doesn't work for your example "all but xyz".  I guess in that
> case, I would need to check both branch patterns and if one did not
> match, then I would reject it and not add to the recipient list.
>
> Was that basically what you had in mind?

Yes, similar to how positive and negative entries in .gitignore influences the final outcome of the 'ignoredness' for each path.

← back to recent threads