compile: allow PATH/foo and populate the hash correctly

This commit is contained in:
Sitaram Chamarty 2009-11-16 20:05:08 +05:30
parent 601eaf8ea1
commit e922dfb939

View file

@ -194,9 +194,9 @@ sub parse_conf_file
# if no ref is given, this PERM applies to all refs # if no ref is given, this PERM applies to all refs
@refs = qw(refs/.*) unless @refs; @refs = qw(refs/.*) unless @refs;
# fully qualify refs that dont start with "refs/"; prefix them with # fully qualify refs that dont start with "refs/" or "PATH/";
# "refs/heads/" # prefix them with "refs/heads/"
@refs = map { m(^refs/) or s(^)(refs/heads/); $_ } @refs; @refs = map { m(^(refs|PATH)/) or s(^)(refs/heads/); $_ } @refs;
# expand the user list, unless it is just "@all" # expand the user list, unless it is just "@all"
@users = expand_list ( @users ) @users = expand_list ( @users )
@ -233,6 +233,13 @@ sub parse_conf_file
# for 2nd level check, store each "ref, perms" pair in order # for 2nd level check, store each "ref, perms" pair in order
for my $ref (@refs) for my $ref (@refs)
{ {
# checking PATH based restrictions is expensive for
# the update hook (see the changes to src/hooks/update
# in this commit for why) so we would *very* much like
# to avoid doing it for the large majority of repos
# that do *not* use PATH limits. Setting a flag that
# can be checked right away will help us do that
$repos{$repo}{PATH_LIMITS} = 1 if $ref =~ /^PATH\//;
push @{ $repos{$repo}{$user} }, { $ref => $perms } push @{ $repos{$repo}{$user} }, { $ref => $perms }
unless $rurp_seen{$repo}{$user}{$ref}{$perms}++; unless $rurp_seen{$repo}{$user}{$ref}{$perms}++;
} }