スクリプトは Wed Apr 28 21:35:55 2004 に倡幌しました
bash-2.05$ cat CVS/Root
:ext:toyoda@www.gfd-dennou.org:/GFD_Dennou_Club/dc-arch/prepri/00inprep/gt3review/cvsroot
bash-2.05$ cvs checkout CVSROOT
cvs server: Updating CVSROOT
U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg
bash-2.05$ cd CVSROOT/
bash-2.05$ ls
CVS	      commitinfo  cvswrappers  loginfo	notify	 taginfo
checkoutlist  config	  editinfo     modules	rcsinfo  verifymsg
bash-2.05$ mv ~/tmp/force-euc.pl .
bash-2.05$ cat force-euc.pl 
#!/usr/bin/perl
# forcesjis.pl - test the text is pure sjis (not including hankaku katakana)

$BinaryPattern = '\.(BMP|CHM|CUR|DAT|DLL|DOC|EXE|GIF|ICO|JPG|LIB|PNG|WAV)$';

for $arg (@ARGV) {
	if (-d $arg) {
	#	chdir($arg) || warn("cannot chdir to $arg ($!)\n");
		next;
	}
	if ($arg =~ m/$BinaryPattern/i) {
		warn("filename $arg seems to be binary: check skipped\n");
		next;
	}
	open(FILE, $arg) || (warn("cannot open $arg ($!)\n"), next);
	$ARGV = $arg;
	while (<FILE>) {
		for ($i = 0; $i < length($_); $i++) {
			$c = substr($_, $i, 1);
			if ($c =~ /[\t\n\r\x20-\x7E\xA1-\xFE]/) {
				next;
			}
			&barf('Broken EUC', $_);
		}
	}
}
exit 0;

sub barf {
	print STDERR "$ARGV: " if $ARGV ne '-';
	warn @_, ". Only EUC-JP or ASCII allowed.\n";
	exit 1;
}
bash-2.05$ ls
CVS	      config	   force-euc.pl  notify   verifymsg
checkoutlist  cvswrappers  loginfo	 rcsinfo
commitinfo    editinfo	   modules	 taginfo
bash-2.05$ cvs add force-euc.pl 
cvs server: scheduling file `force-euc.pl' for addition
cvs server: use 'cvs commit' to add this file permanently
bash-2.05$ ed checkoutlist 
493
$
# comment lines begin with '#'
a
force-euc.pl
.
w
506
q
bash-2.05$ cvs commit -m 'code checker installed'
cvs commit: Examining .
Checking in checkoutlist;
/GFD_Dennou_Club/dc-arch/prepri/00inprep/gt3review/cvsroot/CVSROOT/checkoutlist,v  <--  checkoutlist
new revision: 1.2; previous revision: 1.1
done
RCS file: /GFD_Dennou_Club/dc-arch/prepri/00inprep/gt3review/cvsroot/CVSROOT/force-euc.pl,v
done
Checking in force-euc.pl;
/GFD_Dennou_Club/dc-arch/prepri/00inprep/gt3review/cvsroot/CVSROOT/force-euc.pl,v  <--  force-euc.pl
initial revision: 1.1
done
cvs server: Rebuilding administrative file database
bash-2.05$ ls
CVS	      config	   force-euc.pl  notify   verifymsg
checkoutlist  cvswrappers  loginfo	 rcsinfo
commitinfo    editinfo	   modules	 taginfo
bash-2.05$ ed verifymsg 
1026
$
# repository.
a
DEFAULT /usr/bin/perl $CVSROOT/CVSROOT/force-euc.pl
.
w
1078
q
bash-2.05$ ed commitinfo 
760
$
# in addition to the first matching regex or "DEFAULT".
a
DEFAULT /usr/bin/perl $CVSROOT/$ CVSROOT/force-euc.pl
.
w
812
q
bash-2.05$ cvs commit -m 'checker forced'
cvs commit: Examining .
Checking in commitinfo;
/GFD_Dennou_Club/dc-arch/prepri/00inprep/gt3review/cvsroot/CVSROOT/commitinfo,v  <--  commitinfo
new revision: 1.2; previous revision: 1.1
done
Checking in verifymsg;
/GFD_Dennou_Club/dc-arch/prepri/00inprep/gt3review/cvsroot/CVSROOT/verifymsg,v  <--  verifymsg
new revision: 1.2; previous revision: 1.1
done
cvs server: Rebuilding administrative file database
bash-2.05$ 
スクリプトは Wed Apr 28 21:59:16 2004 に姜位しました