RTx-Foundry

 view release on metacpan or  search on metacpan

sbin/foundry-syncdata  view on Meta::CPAN

#!/usr/local/bin/perl
# $File: //depot/RT/osf/sbin/foundry-syncdata $ $Author: autrijus $
# $Revision: #11 $ $Change: 10131 $ $DateTime: 2004/02/18 08:48:36 $

use strict;
use FindBin;
use DBI;
use File::Copy;
use File::Path;
use Proc::PID_File;

eval {

my $tmp = File::Spec->tmpdir.'/foundry';
mkpath([$tmp], 0, 0755) unless -d $tmp;
my $lock_file = "$tmp/syncdata.lock";
exit if hold_pid_file($lock_file);

eval { require "$FindBin::Bin/../etc/foundry.conf" };
eval { require "$FindBin::Bin/../etc/Foundry/foundry.conf" };

my ($svn_base) = grep { defined and -d } (
    $ENV{SVNROOT}, 
    '/home/svn',
    '/home/svn-repositories',
) or die "Cannot find SVNROOT";
my ($cvs_base) = grep { defined and -d } (
    $ENV{CVSROOT},
    '/home/cvs',
    '/usr/depot/cvsrepo'
) or die "Cannot find CVSROOT";

$svn_base .= "/foundry-repos";
$cvs_base .= "/foundry-repos";

my $rt_dsn = $ENV{RT_DSN} || join(';',
    "dbi:$ENV{DB_TYPE}:dbname=rt3",
    map { $ENV{"DB_$_"} ? qq(\L$_\E=$ENV{"DB_$_"}) : () }
	qw(SID HOST PORT REQUIRESSL),
);
my $cvs_user = $ENV{CVSUSER} || 'cvs';
my $cvs_group = $ENV{CVSGROUP} || 'cvs';
my $cvs_uid = (getpwnam($cvs_user))[2] or die "Cannot find user $cvs_user";
my $dbh = DBI->connect($rt_dsn, $ENV{DB_DBA_USER}, $ENV{DB_DBA_PASSWORD}) or exit;

mkpath([$svn_base], 0, 0755) unless -d $svn_base;

my $commitcheck = "$FindBin::Bin/foundry-cvs-commitcheck";
my $start_commit = "$FindBin::Bin/foundry-svn-start-commit";
my $pre_revprop_change = "$FindBin::Bin/foundry-svn-pre-revprop-change";

#
# this block build the CVS Repostiory, run only once 
#  XXX should it be set in the setup procedure
#
unless (-d $cvs_base) {
    mkpath([$cvs_base], 0, 0755);
    system(qw( cvs -d ), $cvs_base, 'init');

    my $_commitcheck = "$cvs_base/CVSROOT/commitcheck";
    my $_commitinfo = "$cvs_base/CVSROOT/commitinfo";
    open my $fh, ">", $_commitcheck or die $!;
    print $fh "#!/bin/sh\n";
    print $fh "exec $commitcheck \$\@\n";
    close $fh;
    chmod(0755, $_commitcheck);
    open $fh, ">>", $_commitinfo or die $!;
    print $fh "ALL     \$CVSROOT/CVSROOT/commitcheck\n";
    close $fh;
    system(qw( chown -R ), "$cvs_user:$cvs_group", $cvs_base);
}

#
# The following block get user id from database
#
my $users = $dbh->selectcol_arrayref(q{



( run in 0.858 second using v1.01-cache-2.11-cpan-39bf76dae61 )