#!/usr/bin/perl =head1 NAME cvs_stat - get summarised cvs status ignoring files that are up to date =head1 CAVEATS There is probably a useful cpan cvs module this should use. =cut use strict; use Term::ANSIColor qw/colored/; open FH, 'cvs stat 2>&1 |'; my $dir; while () { chomp $_; if (/^\? (.*)$/) { printf( '%27s: %s'."\n", '?', $1); next; } if (/^cvs (?:server|status): Examining (.*)$/) { $dir = $1; } if (/^File: (.*[^ ])\s+Status: (.*)$/) { my $file = $1; my $status = $2; $status eq 'Up-to-date' and next; my $padding = ' ' x (27 - length $status); my $file = ": $dir/$file"; if ( $status eq 'Locally Modified' ) { $status = colored($status, 'bold blue'); } elsif ( $status eq 'Needs Merge' ) { $status = colored($status, 'bold red'); } print $padding, $status, $file, "\n";; next; } }