make info and expand run faster
using a wee bit of local optimisation in an inner function
This commit is contained in:
parent
da210f21bd
commit
1b5294f26d
|
@ -1,6 +1,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
$Data::Dumper::Deepcopy = 1;
|
$Data::Dumper::Deepcopy = 1;
|
||||||
|
$|++;
|
||||||
|
|
||||||
# this file is commonly used using "require". It is not required to use "use"
|
# this file is commonly used using "require". It is not required to use "use"
|
||||||
# (because it doesn't live in a different package)
|
# (because it doesn't live in a different package)
|
||||||
|
@ -397,7 +398,17 @@ sub parse_acl
|
||||||
our $writers = $ENV{GL_WRITERS} = $w || $ENV{GL_WRITERS} || "NOBODY";
|
our $writers = $ENV{GL_WRITERS} = $w || $ENV{GL_WRITERS} || "NOBODY";
|
||||||
our $gl_user = $ENV{GL_USER};
|
our $gl_user = $ENV{GL_USER};
|
||||||
|
|
||||||
|
# these need to persist across calls to this function, so "our"
|
||||||
|
our $saved_crwu;
|
||||||
|
our (%saved_repos, %saved_groups);
|
||||||
|
|
||||||
|
if ($saved_crwu eq "$creator,$readers,$writers,$gl_user") {
|
||||||
|
%repos = %saved_repos; %groups = %saved_groups;
|
||||||
|
} else {
|
||||||
die "parse $GL_CONF_COMPILED failed: " . ($! or $@) unless do $GL_CONF_COMPILED;
|
die "parse $GL_CONF_COMPILED failed: " . ($! or $@) unless do $GL_CONF_COMPILED;
|
||||||
|
$saved_crwu = "$creator,$readers,$writers,$gl_user";
|
||||||
|
%saved_repos = %repos; %saved_groups = %groups;
|
||||||
|
}
|
||||||
unless (defined($data_version) and $data_version eq $current_data_version) {
|
unless (defined($data_version) and $data_version eq $current_data_version) {
|
||||||
# this cannot happen for 'easy-install' cases, by the way...
|
# this cannot happen for 'easy-install' cases, by the way...
|
||||||
print STDERR "(INTERNAL: $data_version -> $current_data_version; running gl-setup)\n";
|
print STDERR "(INTERNAL: $data_version -> $current_data_version; running gl-setup)\n";
|
||||||
|
@ -473,8 +484,8 @@ sub report_basic
|
||||||
my $count = 0;
|
my $count = 0;
|
||||||
for my $r (sort keys %repos) {
|
for my $r (sort keys %repos) {
|
||||||
next unless $r =~ /$repo/i;
|
next unless $r =~ /$repo/i;
|
||||||
# if $GL_BIG_CONFIG is on, limit the number of output lines to 5
|
# if $GL_BIG_CONFIG is on, limit the number of output lines to 20
|
||||||
next if $GL_BIG_CONFIG and $count++ >= 5;
|
next if $GL_BIG_CONFIG and $count++ >= 20;
|
||||||
if ($r =~ $REPONAME_PATT and $r !~ /\bCREAT[EO]R\b/) {
|
if ($r =~ $REPONAME_PATT and $r !~ /\bCREAT[EO]R\b/) {
|
||||||
&parse_acl($GL_CONF_COMPILED, $r, "NOBODY", "NOBODY", "NOBODY");
|
&parse_acl($GL_CONF_COMPILED, $r, "NOBODY", "NOBODY", "NOBODY");
|
||||||
} else {
|
} else {
|
||||||
|
@ -490,7 +501,7 @@ sub report_basic
|
||||||
$perm .= ( $repos{$r}{W}{'@all'} ? ' @W' : ( $repos{'@all'}{W}{$user} ? ' #W' : ( $repos{$r}{W}{$user} ? ' W' : ' ' )));
|
$perm .= ( $repos{$r}{W}{'@all'} ? ' @W' : ( $repos{'@all'}{W}{$user} ? ' #W' : ( $repos{$r}{W}{$user} ? ' W' : ' ' )));
|
||||||
print "$perm\t$r\r\n" if $perm =~ /\S/;
|
print "$perm\t$r\r\n" if $perm =~ /\S/;
|
||||||
}
|
}
|
||||||
print "only 5 out of $count candidate repos examined\r\nplease use a partial reponame or regex pattern to limit output\r\n" if $GL_BIG_CONFIG and $count > 5;
|
print "only 20 out of $count candidate repos examined\r\nplease use a partial reponame or regex pattern to limit output\r\n" if $GL_BIG_CONFIG and $count > 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
@ -518,13 +529,13 @@ sub expand_wild
|
||||||
$actual_repo =~ s/\.git$//;
|
$actual_repo =~ s/\.git$//;
|
||||||
# actual_repo has to match the pattern being expanded
|
# actual_repo has to match the pattern being expanded
|
||||||
next unless $actual_repo =~ /$repo/i;
|
next unless $actual_repo =~ /$repo/i;
|
||||||
next if $GL_BIG_CONFIG and $count++ >= 5;
|
next if $GL_BIG_CONFIG and $count++ >= 20;
|
||||||
|
|
||||||
my($perm, $creator, $wild) = &repo_rights($actual_repo);
|
my($perm, $creator, $wild) = &repo_rights($actual_repo);
|
||||||
next unless $perm =~ /\S/;
|
next unless $perm =~ /\S/;
|
||||||
print "$perm\t$creator\t$actual_repo\n";
|
print "$perm\t$creator\t$actual_repo\n";
|
||||||
}
|
}
|
||||||
print "only 5 out of $count candidate repos examined\nplease use a partial reponame or regex pattern to limit output\n" if $GL_BIG_CONFIG and $count > 5;
|
print "only 20 out of $count candidate repos examined\nplease use a partial reponame or regex pattern to limit output\n" if $GL_BIG_CONFIG and $count > 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
# there will be multiple calls to repo_rights; better to use a closure. We
|
# there will be multiple calls to repo_rights; better to use a closure. We
|
||||||
|
|
Loading…
Reference in a new issue