Files correlati : Commento : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl -w
 | |
| 
 | |
| ###############################################################################
 | |
| # Name:     difflast.pl
 | |
| # Purpose:  Shows the difference between the current local version of the file
 | |
| #           and the last cvs revision
 | |
| # Version:  $Id: difflast.pl 7748 2000-07-15 19:51:35Z cvsuser $
 | |
| # Author:   VZ
 | |
| # Created:  23.12.99
 | |
| # Copyright:(c) Vadim Zeitlin 1999
 | |
| ###############################################################################
 | |
| 
 | |
| use strict;
 | |
| 
 | |
| my $CVS = "cvs -z3";    # the cvs command
 | |
| 
 | |
| # the regexp for cvs revision number
 | |
| my $RE_CVS_REV = "\\d+(?:\\.\\d+)+";
 | |
| 
 | |
| sub dec_rev($)
 | |
| {
 | |
|     my $rev = $_[0];
 | |
| 
 | |
|     # decrement the revision number to get the previos one
 | |
|     $rev =~ s/(\d+)$/$1 - 1/e;
 | |
| 
 | |
|     return $rev;
 | |
| }
 | |
| 
 | |
| sub get_last_rev($)
 | |
| {
 | |
|     my $file = $_[0];
 | |
| 
 | |
|     my $basename = $file;
 | |
|     $basename =~ s@^.*/@@;
 | |
| 
 | |
|     # first get the current version: try the Id RCS tag in the file itself
 | |
|     # first, use "cvs status" if this fails
 | |
|     if ( open(INPUT, $file) ) {
 | |
|         while (<INPUT>) {
 | |
|             # notice that we shouldn't have '$' followed by 'Id' or cvs will
 | |
|             # substitute it!
 | |
|             if ( /\$(Id): $basename,v ($RE_CVS_REV)/ ) {
 | |
|                 return &dec_rev($2);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     open(INPUT, "$CVS -q status $file |") or return 0;
 | |
| 
 | |
|     while (<INPUT>) {
 | |
|         if ( /Working revision:\s+($RE_CVS_REV)/ ) {
 | |
|             return &dec_rev($1);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| sub process_file($)
 | |
| {
 | |
|     my $file = $_[0];
 | |
|     my $revlast = &get_last_rev($file);
 | |
| 
 | |
|     if ( !$revlast ) {
 | |
|         warn "Failed to get the last revision for $file, skipping.\n"
 | |
|     }
 | |
|     elsif ( $revlast =~ '\.0' ) {
 | |
|         warn "No previous revision of the file $file.\n"
 | |
|     }
 | |
|     else {
 | |
|         print `$CVS diff -b -kk -r $revlast $file`;
 | |
|     }
 | |
| }
 | |
| 
 | |
| # entry point
 | |
| 
 | |
| die "Usage: $0 <filenames...>\n" if ( $#ARGV == -1 );
 | |
| 
 | |
| foreach my $file (@ARGV) { process_file($file); }
 | |
| 
 | |
| exit 0;
 |