apache.conf.in: include input byte count if available
[girocco.git] / toolbox / remirror-project.pl
blobb8a4d503c4d794bd28dabc59683fa6aea8a12aab
1 #!/usr/bin/perl
3 # Initiate a re-mirror of a project
5 use strict;
6 use warnings;
7 use IO::Socket;
8 use lib @basedir@;
10 use Girocco::Config;
11 use Girocco::Project;
12 use Girocco::Util qw(noFatalsToBrowser);
13 BEGIN {noFatalsToBrowser}
15 my $project = shift @ARGV || die "Please give project name on command line.";
17 my $p = Girocco::Project->load($project) || die "Project '$project' not found!";
19 if (!$p->{mirror}) {
20 die "Project '$project' is a push project, not a mirror project."
23 if ($p->{clone_in_progress} && !$p->{clone_failed}) {
24 die "Project '$project' already has a clone underway at this moment."
27 unlink($p->_clonefail_path);
28 unlink($p->_clonelog_path);
29 my $cp = $p->_clonep_path;
30 open X, '>', $cp or die "failed to create $cp: $!";
31 close X;
33 my $sock = IO::Socket::UNIX->new($Girocco::Config::chroot.'/etc/taskd.socket') or die "cannot connect to taskd.socket: $!";
34 select((select($sock),$|=1)[0]);
35 $sock->print("clone ".$p->{name}."\n");
36 # Just ignore reply, we are going to succeed anyway and the I/O
37 # would apparently get quite hairy.
38 $sock->flush();
39 sleep 2; # *cough*
40 $sock->close();
42 print "Project '$project' remirror initiated.\n";
43 exit 0