5 stageDir=>'/var/gitgot',
8 gotwebDir=>'/var/www/got/public',
10 # Sync changes from stageDir to the webdir
11 opendir (my $DH, $config->{stageDir})
12 or die "Can't opendir " . $config->{stageDir} . " : $!";
13 while (my $user = readdir($DH)) {
14 next if ($user =~ /^\./); # skip . files
15 if (-d $config->{stageDir} . "/$user") {
16 # Need the name of each repo so we can add username ass prefix
17 opendir (my $uDH, $config->{stageDir} . "/$user")
18 or die "Can't opendir ". $config->{stageDir} . "/$user/ : $!";
19 while (my $repo = readdir($uDH)) {
20 next if ($repo =~ /^\./); # skip . files
21 # need destination folder name to change to prefix
22 # the username to it to prevent one user from clobbering
23 # another users repos. Can't do a rename of the folder
24 # with rsync so have to create the destination folder then
25 # rsync the contents of it.
26 my @stat=stat($config->{stageDir} . "/$user/$repo");
27 my $prefixName="$user-$repo";
28 my $dst=qq(/$config->{gitDir}/$prefixName/);
29 mkdir $dst,$stat[2]; #stat[2] is mode of original dir
30 opendir (my $rDH, $config->{stageDir} . "/$user/$repo")
31 or die "Can't opendir ". $config->{stageDir} . "/$user/$repo : $!";
32 while (my $git = readdir($rDH)) {
33 next if ($git eq '.' or $git eq '..'); # skip . and ..
35 my $src=qq($config->{stageDir}/$user/$repo/$git);
37 openrsync --rsync-path=openrsync -a --delete $src $dst
39 warn "rsync failed $prefixName\n$!\n" if ($rv != 0);
45 #final sync of all repos from the /var/git to /var/www/got/public/ for gotweb
47 openrsync --rsync-path=openrsync -a --delete $config->{gitDir}/* $config->{gotwebDir}/
49 warn "rsync failed from " . $config->{gitDir} . " to ". $config->{gotwebDir} . "\n$!\n" if ($rv != 0);