#!/usr/local/bin/perl # # ToolName: Change CVS/Repository # Usage: chcvsrepo oldcvsrepo newcvsrepo [targetdir] # Lisence: GNU Public Lisence # Author: Mika Ohtsuki (mika@mikamama.com) # Version: $Id: chcvsrepo.txt,v 1.1 2002/02/24 02:14:04 misty Exp $ # Comment: Let's play with CVS! # # Argument1: oldcvsrepo # Argument2: newcvsrepo if ($ARGV[0] && $ARGV[1]) { $oldcvsrepo = $ARGV[0]; $newcvsrepo = $ARGV[1]; } else { print "Usage: chcvsrepo oldcvsrepo newcvsrepo [targetdir]\n"; exit (0); } # Argument 3: target $target = '.'; if ($ARGV[2]) { $target = $ARGV[2]; } chcvsrepo($target); # Dir check method. sub chcvsrepo { my $dirname = $_[0]; my @dirs = (); print "Openning $dirname..."; opendir(DIR, $dirname) or die "Could not open $dirname: $!\n"; print "done.\n"; while ($filename = readdir(DIR)) { $path = $dirname.'/'.$filename; if ( -d $path ) { if ($filename eq 'CVS') { $repo = $path.'/Repository'; open (REPO, "<$repo") or die "Could not open $repo: $!\n"; $str = ; chomp($str); close (REPO); $str =~ s/$oldcvsrepo/$newcvsrepo/eg; open (REPO, ">$repo") or die "Could not open $repo: $!\n"; print "...writing $str.."; print REPO "$str\n"; print "done\n"; close(REPO); } elsif ($filename ne '.' && $filename ne '..') { print "DIR: $path\n"; push(@dirs, $path); } } } closedir(DIR); # Recursion (fun!) foreach $dir (@dirs) { chcvsrepo($dir); } }