#!/usr/bin/perl -s our ($init); my $usage=" usage: bsync -init=cvsroot base cvs_dir -- to build initial cvs version bsync base -- to sync "; my $p = shift or die $usage; if($p =~ m/(.*):(.*)/){ $base="/breviario/$1"; $p=$2} else { $base="/breviario/$p"; undef $p; } die("base $base not found\n") unless (-d $base); die("base $base.cvsyn already exists\n") if ($init and -d "$base.cvsyn"); if($init){ mkdir("$base.cvsyn") or die("cant mkdir $base.cvsyn\n") ; my $where = shift or die $usage; open(F,">$base.cvsyn/where") or die("cant create temp. file"); print F "$where\n"; close F; psys("cd $base.co ; cvs -d $init import -m brev -I CVSROOT $where a b"); psys("cd $base.cvsyn; cvs -d $init co $where"); } elsif(-d "$base.cvsyn"){ my $mywhere = `cat $base.cvsyn/where`; chomp($mywhere); my $newfiles = copyall("$base.co","$base.cvsyn/$mywhere"); open(F,"cd $base.cvsyn/$mywhere; cvs update |"); while(){ if(/U\s+(.*)/){ print "\n\n\n\n\n\n\nTODO: mv $1 para $base/$1\n"} elsif(/P\s+(.*)/){print "\n\n\n\n\n\n\nTODO: mv $1 para $base/$1\n"} elsif(/M\s+(.*)/){print "\n\n\n\n\n\n\nTODO: modified $1 para $base/$1\n"} else{ print "\n\n\n\n\n\n\nTODO:?????????????\n"} } close F; if($newfiles){ psys("cd $base.cvsyn/$mywhere;cvs add $newfiles;cvs ci -m sync");} else { psys("cd $base.cvsyn/$mywhere; cvs ci -m sync");} } else { die $usage; } sub psys{ print ">>> $_[0]\n"; die("Erro em $_[0]:$!\n") if system ("$_[0]"); } sub copyall{ my $d1=shift; my $d2=shift; my $new=""; for(<$d1/*>){ $_ =~ s!$d1/!!; next if $_ eq "CVS"; next if $_ eq "CVSROOT"; $new .= " $_" unless (-f "$d2/$_"); psys("cp $d1/$_ $d2/$_") } $new; } __END__