list_phy_repos() moved from store.pm to common.pm

but you need to chdir() to the right place before calling it
This commit is contained in:
Sitaram Chamarty 2012-03-08 19:20:00 +05:30
parent 00934c8304
commit 95c6952e11
2 changed files with 24 additions and 24 deletions

View file

@ -6,7 +6,7 @@ package Gitolite::Common;
#<<< #<<<
@EXPORT = qw( @EXPORT = qw(
print2 dbg _mkdir _open ln_sf tsh_rc sort_u print2 dbg _mkdir _open ln_sf tsh_rc sort_u
say _warn _chdir _print tsh_text say _warn _chdir _print tsh_text list_phy_repos
say2 _die slurp tsh_lines say2 _die slurp tsh_lines
trace tsh_try trace tsh_try
usage tsh_run usage tsh_run
@ -142,6 +142,26 @@ sub sort_u {
my @sort_u = sort keys %uniq; my @sort_u = sort keys %uniq;
return \@sort_u; return \@sort_u;
} }
{
my @phy_repos = ();
sub list_phy_repos {
trace(3);
# use cached value only if it exists *and* no arg was received (i.e.,
# receiving *any* arg invalidates cache)
return \@phy_repos if ( @phy_repos and not @_ );
for my $repo (`find . -name "*.git" -prune`) {
chomp($repo);
$repo =~ s(\./(.*)\.git$)($1);
push @phy_repos, $repo;
}
return sort_u(\@phy_repos);
}
}
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# bare-minimum subset of 'Tsh' (see github.com/sitaramc/tsh) # bare-minimum subset of 'Tsh' (see github.com/sitaramc/tsh)

View file

@ -195,10 +195,10 @@ sub store {
trace(3); trace(3);
# first write out the ones for the physical repos # first write out the ones for the physical repos
my @phy_repos = list_physical_repos(1);
_chdir($GL_REPO_BASE); _chdir($GL_REPO_BASE);
for my $repo (@phy_repos) { my $phy_repos = list_phy_repos(1);
for my $repo (@{ $phy_repos }) {
store_1($repo); store_1($repo);
} }
@ -228,26 +228,6 @@ sub check_subconf_repo_disallowed {
return 1; return 1;
} }
{
my @phy_repos = ();
sub list_physical_repos {
trace(3);
_chdir($GL_REPO_BASE);
# use cached value only if it exists *and* no arg was received (i.e.,
# receiving *any* arg invalidates cache)
return @phy_repos if ( @phy_repos and not @_ );
for my $repo (`find . -name "*.git" -prune`) {
chomp($repo);
$repo =~ s(\./(.*)\.git$)($1);
push @phy_repos, $repo;
}
return @phy_repos;
}
}
sub store_1 { sub store_1 {
# warning: writes and *deletes* it from %repos and %configs # warning: writes and *deletes* it from %repos and %configs
my ($repo) = shift; my ($repo) = shift;