summaryrefslogtreecommitdiff
path: root/lib/sbin/CVSStatus.pl
diff options
context:
space:
mode:
authorallen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac>2000-03-06 12:19:52 +0000
committerallen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac>2000-03-06 12:19:52 +0000
commitaf4184c1f910894324ffd41e0f4cd7abaa4d8d05 (patch)
treef93fc957b4df50f6353737723a6efae6bef690e8 /lib/sbin/CVSStatus.pl
parent28a19f73c9cc6b219734df8fd25c921e95e537d1 (diff)
Perl file for processing CVS output
git-svn-id: http://svn.cactuscode.org/flesh/trunk@1415 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin/CVSStatus.pl')
-rw-r--r--lib/sbin/CVSStatus.pl89
1 files changed, 89 insertions, 0 deletions
diff --git a/lib/sbin/CVSStatus.pl b/lib/sbin/CVSStatus.pl
new file mode 100644
index 00000000..7b4ca9f1
--- /dev/null
+++ b/lib/sbin/CVSStatus.pl
@@ -0,0 +1,89 @@
+#/*@@
+# @file CVSStatus.pl
+# @date Mon Mar 6 01:20:01 CET 2000
+# @author Gabrielle Allen
+# @desc
+# Processes output from cvs status and gives better messages
+# Original version by Paul Walker
+# $Header$
+# @enddesc
+#@@*/
+
+&writeheader();
+
+open (CS, "cvs status 2>&1 |");
+$gotone = 0;
+
+while (<CS>) {
+ if (m/waiting for/) {
+ print;
+ }
+ if (m/Examining/) {
+ if ($gotone) {
+ $dir =~ m:^\s*(/\w*/\w*):;
+ $dir = $1;
+ if ($dir ne $dir_old) {
+ print "\n$dir\n";$dir_old=$dir;
+ }
+ write;
+ # Get differences between versions
+ if ($case =~ /diff/i)
+ {
+ print "\n\ncvs diff -r $rversion $thisdir/$file\n\n";
+ open (DIFF, "cvs diff -r $rversion $thisdir/$file |");
+ while (<DIFF>) {print;}
+ }
+ }
+ $gotone = 0;
+ $thisdir="";
+ $file = "";
+ $dir = "";
+ $status = "";
+ $version="";
+ $rversion="";
+ }
+ if (m/File: (\S+)/) {$file = $1;}
+ if (m/Status: (.+)\s/) {
+ $status = $1;
+ if (!($status =~ m/Up-to-date/)) {
+ $gotone = 1;
+ }
+ }
+ if (m/Examining\s*(\S+)\s*$/) {$thisdir = $1;}
+ if (m/Working revision:\s*(\S+)\s/) {$version = $1;}
+ if (m/Repository revision:\s*(\S+)\s+(\S+)/) {
+ $rversion = $1; $dir = $2;
+ }
+
+}
+exit;
+
+format STDOUT =
+@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<< @<<<<<<</@<<<<<<<
+$file, $status, $version, $rversion
+.
+
+
+sub writeheader
+{
+local ($case);
+if ($case =~ "diff")
+{
+print <<EOF;
+
+CVS Diff report
+
+File Status Local/Remote ver
+-------------------------------------------------------------------------------
+}
+else
+{
+print <<EOF;
+
+CVS Status report
+
+File Status Local/Remote ver
+-------------------------------------------------------------------------------
+EOF
+}
+}