Re: [PERL] Forslag/Ønske cvs utility
- To: sslug@sslug
- Subject: Re: [PERL] Forslag/Ønske cvs utility
- From: Ole Tange <sslug@sslug>
- Date: Wed, 26 Jul 2000 05:32:03 +0200 (CEST)
On Tue, 25 Jul 2000, Peter Toft wrote:
> Jeg har diskuteret lidt med Ulrik Dichow (som ikke har
> tiden) om et nyt CVS værktøj jeg savner meget.
>
> [ ændrede CVS-filer ]
Sånoed ala nedenstående?
Er selve directories også i CVS? Jeg er gået ud fra at det er de ikke: At
vi kun kikker på filerne i subdirs. Hvis jeg tager fejl er det en minimal
ændring:
31c31
< -d $dir_filename and do { push @subdirs, $dir_filename; next; };
---
> -d $dir_filename and do { push @subdirs, $dir_filename; };
53c53
< @{$files{New}} = grep { not -d $_ } @currentdir;
---
> @{$files{New}} = @currentdir;
/Ole
#!/usr/bin/perl
# Usage:
# cvs-alter dir
#
# 2000-07-25 Ole Tange <sslug@sslug>
use Time::Local;
use strict;
my $startdir = shift || die("Usage:\n$0 dir\n");
cvs_changed_in_dir($startdir);
sub cvs_changed_in_dir($) {
my $dir = shift;
my ($line,
$foo,$filename,$version,$date,$foo,$mtime,$date,
$dir_filename,$cvstime,%files,%seen,%skip,@subdirs,
@currentdir,$i);
my %mon;
@mon{qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)}=
0..11; # Perl months are 0 .. 11
open(ENTRIES,"$dir/CVS/Entries") ||
die("Cannot open $dir/CVS/Entries");
while($line=<ENTRIES>) {
($foo,$filename,$version,$date,$foo) = split(m:/:, $line);
$dir_filename=$dir."/".$filename;
-d $dir_filename and do { push @subdirs, $dir_filename; next; };
$mtime= (stat $dir_filename)[9]; # modification time of $filename
$date=~/... (...) (\d+) (\d+):(\d+):(\d+) (\d{4})/ ||
die("$date not in ctime(3) format");
$cvstime=timegm($5,$4,$3,$2,$mon{$1},$6);
if($cvstime != $mtime) {
push @{$files{Changed}}, $dir_filename;
} else {
push @{$files{Unchanged}}, $dir_filename;
}
$seen{$dir_filename}=1;
}
close ENTRIES;
opendir(D,$dir) || die("Cannot open $dir");
@skip{qw(. .. CVS)}=1..3; # Filenames that that we want to skip
@currentdir= map { $dir."/".$_ }
grep { not $skip{$_} and not $seen{$_} } readdir(D);
closedir(D);
@{$files{New}} = grep { not -d $_ } @currentdir;
push @subdirs, grep { -d $_ } @currentdir;
print ("Changed files\n",
"-------------\n",
map { "$_\n" } sort @{$files{Changed}});
print "\n";
print ("New files\n",
"---------\n",
map { "$_\n" } sort @{$files{New}});
print "\n";
print ("Unchanged files\n",
"---------------\n",
map { "$_\n" } sort @{$files{Unchanged}});
print "\n";
for $i (@subdirs) { cvs_changed_in_dir($i); } # Recurse if any subdirs
}
 |
 |
 |
| |
|
|
 |
| |
|
Henvendelse vedrørende websiderne til <www_admin>.
|
Senest ændret
2005-08-10, klokken 19:52
Denne side vedligeholdes af
MHonArc
.
|
|
|
 |
 |
 |