Blame


1 9d3839a0 2023-05-23 izzyb #!/usr/bin/perl
2 9d3839a0 2023-05-23 izzyb use strict;
3 9d3839a0 2023-05-23 izzyb use warnings;
4 9d3839a0 2023-05-23 izzyb my $config={
5 9d3839a0 2023-05-23 izzyb stageDir=>'/var/gitgot',
6 9d3839a0 2023-05-23 izzyb gitgotUser=>'gitgot',
7 c53f2741 2023-05-23 izzyb gitDir=>'/var/git',
8 9d3839a0 2023-05-23 izzyb gotwebDir=>'/var/www/got/public',
9 8bf0b476 2023-05-23 izzyb cloneurlBase=>"git://got.ircnow.org",
10 9d3839a0 2023-05-23 izzyb };
11 9d3839a0 2023-05-23 izzyb # Sync changes from stageDir to the webdir
12 9d3839a0 2023-05-23 izzyb opendir (my $DH, $config->{stageDir})
13 9d3839a0 2023-05-23 izzyb or die "Can't opendir " . $config->{stageDir} . " : $!";
14 9d3839a0 2023-05-23 izzyb while (my $user = readdir($DH)) {
15 9d3839a0 2023-05-23 izzyb next if ($user =~ /^\./); # skip . files
16 9d3839a0 2023-05-23 izzyb if (-d $config->{stageDir} . "/$user") {
17 9d3839a0 2023-05-23 izzyb # Need the name of each repo so we can add username ass prefix
18 9d3839a0 2023-05-23 izzyb opendir (my $uDH, $config->{stageDir} . "/$user")
19 9d3839a0 2023-05-23 izzyb or die "Can't opendir ". $config->{stageDir} . "/$user/ : $!";
20 9d3839a0 2023-05-23 izzyb while (my $repo = readdir($uDH)) {
21 9d3839a0 2023-05-23 izzyb next if ($repo =~ /^\./); # skip . files
22 9d3839a0 2023-05-23 izzyb # need destination folder name to change to prefix
23 9d3839a0 2023-05-23 izzyb # the username to it to prevent one user from clobbering
24 9d3839a0 2023-05-23 izzyb # another users repos. Can't do a rename of the folder
25 9d3839a0 2023-05-23 izzyb # with rsync so have to create the destination folder then
26 9d3839a0 2023-05-23 izzyb # rsync the contents of it.
27 9d3839a0 2023-05-23 izzyb my @stat=stat($config->{stageDir} . "/$user/$repo");
28 9d3839a0 2023-05-23 izzyb my $prefixName="$user-$repo";
29 c53f2741 2023-05-23 izzyb my $dst=qq(/$config->{gitDir}/$prefixName/);
30 9d3839a0 2023-05-23 izzyb mkdir $dst,$stat[2]; #stat[2] is mode of original dir
31 9d3839a0 2023-05-23 izzyb opendir (my $rDH, $config->{stageDir} . "/$user/$repo")
32 9d3839a0 2023-05-23 izzyb or die "Can't opendir ". $config->{stageDir} . "/$user/$repo : $!";
33 9d3839a0 2023-05-23 izzyb while (my $git = readdir($rDH)) {
34 9d3839a0 2023-05-23 izzyb next if ($git eq '.' or $git eq '..'); # skip . and ..
35 9d3839a0 2023-05-23 izzyb
36 9d3839a0 2023-05-23 izzyb my $src=qq($config->{stageDir}/$user/$repo/$git);
37 9d3839a0 2023-05-23 izzyb my $rv=system(qq{
38 9d3839a0 2023-05-23 izzyb openrsync --rsync-path=openrsync -a --delete $src $dst
39 9d3839a0 2023-05-23 izzyb });
40 9d3839a0 2023-05-23 izzyb warn "rsync failed $prefixName\n$!\n" if ($rv != 0);
41 9d3839a0 2023-05-23 izzyb }
42 8bf0b476 2023-05-23 izzyb # Create a gloneurls file with the default clone url if it isn't set
43 8bf0b476 2023-05-23 izzyb my $cloneurl = $config->{gitDir} . "/$prefixName/cloneurl";
44 8bf0b476 2023-05-23 izzyb unless (-e $cloneurl) {
45 8bf0b476 2023-05-23 izzyb open(my $oDH, ">$cloneurl")
46 8bf0b476 2023-05-23 izzyb or die "Can't write to $cloneurl : $!";
47 8bf0b476 2023-05-23 izzyb print $oDH $config->{cloneurlBase} . "/$prefixName";
48 8bf0b476 2023-05-23 izzyb }
49 9d3839a0 2023-05-23 izzyb }
50 9d3839a0 2023-05-23 izzyb }
51 9d3839a0 2023-05-23 izzyb }
52 9d3839a0 2023-05-23 izzyb
53 c53f2741 2023-05-23 izzyb #final sync of all repos from the /var/git to /var/www/got/public/ for gotweb
54 c53f2741 2023-05-23 izzyb my $rv=system(qq{
55 c53f2741 2023-05-23 izzyb openrsync --rsync-path=openrsync -a --delete $config->{gitDir}/* $config->{gotwebDir}/
56 c53f2741 2023-05-23 izzyb });
57 c53f2741 2023-05-23 izzyb warn "rsync failed from " . $config->{gitDir} . " to ". $config->{gotwebDir} . "\n$!\n" if ($rv != 0);
58 c53f2741 2023-05-23 izzyb