Warning, /sdk/kde-dev-scripts/noncvslist is written in an unsupported language. File is not indexed.

0001 #! /usr/bin/env perl
0002 
0003 # Offline check for extra in a checked-out
0004 # CVS module. Sirtaj Singh Kang <taj@kde.org> May 2000.
0005 # Usage:
0006 #       noncvsfiles <module dir>...
0007 
0008 @dirqueue = @ARGV;
0009 %entries = ();
0010 @files = ();
0011 
0012 sub processEntries
0013 {
0014         my ( $dir ) = @_;
0015 
0016         open( ENTRIES, $dir."/CVS/Entries" ) 
0017                 || warn "Couldn't read '$dir/CVS/Entries'";
0018 
0019         while( <ENTRIES> ) {
0020                 if ( m#^\s*D/([^/]+)/# ) {
0021                         push ( @dirqueue, "$dir/$1" );
0022                         $entries{ "$dir/$1" } = 1;
0023                         next;
0024                 }
0025 
0026                 next unless m#^\s*/([^/]+)/([\d\.]*)/([^/]+)/#;
0027 
0028                 $fname = $1;
0029                 $ver = $2;
0030                 $stamp = $3;
0031 
0032                 $entries{ "$dir/$fname" } = $stamp;
0033         }
0034 
0035         close( ENTRIES );
0036 
0037         open( IGNORE, $dir."/.cvsignore" ) || return;
0038 
0039         while( <IGNORE> ) {
0040                 chomp;
0041                 s/^\s+//;
0042                 s/\s+$//;
0043                 $entries{ "$dir/$_" } = "ignored";
0044         }
0045 
0046         close( IGNORE );
0047 }
0048 
0049 # month assoc array for name -> index lookups
0050 $mctr = 0;
0051 
0052 foreach $month ( @monthlist ) {
0053         $months{ $month } = $mctr;
0054         $mctr++;
0055 }
0056 
0057 # Try current directory if none specified
0058 
0059 if( $#dirqueue < 0 ) {
0060         push( @dirqueue, "." );
0061 }
0062 
0063 # process directory queue, filling entries hash
0064 foreach $dir ( @dirqueue ) {
0065         processEntries( $dir );
0066 
0067         open( FILES, 'find "'.$dir.'" | grep -v "/CVS"|' )
0068                         || die "Couldn't find files in $dir";
0069 
0070         while( <FILES> ) {
0071                 chop;
0072                 next if $_ eq '.';
0073                 next if m/\/\.#/;     #ignore .#blah
0074                 push @files, $_;
0075         }
0076 }
0077 
0078 #foreach my $entry ( sort keys %entries ) 
0079 #{
0080 #       print $entry,"\n";
0081 #}
0082 
0083 my $lastfile = "";
0084 
0085 foreach my $file ( sort @files ) 
0086 {
0087         next if $file eq $lastfile;
0088         $lastfile = $file;
0089 
0090         if ( !exists $entries{ $file } ) {
0091                 print $file,"\n";
0092         }
0093 }
0094 
0095 =head1 NAME
0096 
0097 noncvslist -- List all files in a checked out CVS module that are not
0098 known by the CVS server.
0099 
0100 =head1 SYNOPSIS
0101 
0102 When the current directory is a CVS module:
0103  
0104         noncvslist
0105  
0106 Checking checked out subdirectories:
0107  
0108         noncvslist [<dir>...]
0109 
0110 =head1 DESCRIPTION
0111 
0112 This script will list all files and directories in the module(s) that are 
0113 not listed in the CVS/Entries files. These may be files created during builds,
0114 new un-added sources files etc. It is a useful housekeeping tool.
0115 
0116 =head1 EXAMPLES
0117 
0118 Assuming baseline/ has kdelibs/ and kdebase/ checked out within it:
0119 
0120         cd baseline/kdelibs; noncvslist
0121         cd baseline; noncvslist kdelibs kdebase
0122 
0123 =head1 AUTHOR
0124 
0125 Sirtaj Singh Kang <taj@kde.org>
0126 
0127 =cut