cmpnewest 1.38 KB
#! /usr/sbin/perl

#
# head revision と work とを比較して、違いのあるファイルに関して、
# 違いを表示するスクリプト
#
# 主に、パッチブランチ上で使用し、メインの head と相違がないかを
# チェックするのに利用する。
#

$master="/hosts/liberte/disk6/Master/cvsmdev2";
$root=$ENV{'ROOT'};


#
# オプションの取得
#
while( @ARGV ){
    $sw = shift;

    if ( $sw =~ /^-/ ) {

        if ( $sw eq "-h" ){
            &usage;
            exit(0);
        } else {
            &usage;
            exit(1);
        }

    }
}

&usage, exit(1) if $#ARGV != -1;


open(LOG, "cvs log |") || die "$!";

while(<LOG>){

    if (/^RCS file: ${master}\/PR\/(.+),v$/){
	$filename = $1;
    }
    elsif (/^head: (1\..+)$/) {
        $head = $1;
    }

    if (/=================================/){ 

        open(DIFF, "cvs diff -kk -r $head ${root}/PR/$filename |") || die "$!";
	@diff = <DIFF>;

	if (@diff != ()) {
	    splice(@diff, 0, 5);
	    if (@diff != ()) {
		print "==========================================\n";
		print "filename: $filename\n";
		print "head revision: $head\n";
		print "-----------------\n";
		print "@diff\n";
		print "-----------------\n";
	    }		
	}
	close(DIFF);
    }

}

close(LOG);


sub usage {
    print "\n";
    print "usage: cmpnewest\n";
    print "\tカレントディレクトリの下に関して、マスターの最新バージョンとの\n";
    print "\tdiff をとり、異なるものだけを報告します。\n";
    print "\n";
}