* Scripts/cvs-create-patch: Improve handling of directories with mixed CVS...
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 Jun 2005 05:56:32 +0000 (05:56 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 Jun 2005 05:56:32 +0000 (05:56 +0000)
        to execute the cvs diff commands.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@9363 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/cvs-create-patch

index bc6b14812f431928a3650fe9e6857c051a04abf2..2d15c796971bb3ae95cc5bdf15d843a61279e91b 100644 (file)
@@ -1,3 +1,8 @@
+2005-06-11  Darin Adler  <darin@apple.com>
+
+        * Scripts/cvs-create-patch: Improve handling of directories with mixed CVS roots by going into each directory
+        to execute the cvs diff commands.
+
 2005-06-11  Darin Adler  <darin@apple.com>
 
         - added first cuts at some cvs scripts
index ff3f36d358d9c67062579ccbf62b784d96ec6c9f..3d416957bc754c5b7509f3c5d668eecb297ffd33 100755 (executable)
@@ -44,6 +44,9 @@
 
 use strict;
 
+my $startDir = `pwd`;
+chomp $startDir;
+
 my %paths;
 
 # Create list of paths to diff.
@@ -53,7 +56,7 @@ if (!@ARGV) {
     for my $file (@ARGV) {
         die "can't handle absolute paths like \"$file\"\n" if $file =~ m|^/|;
         die "can't handle empty string path\n" if $file eq "";
-        die "can't handle path with ' in the name like \"$file\"\n" if $file =~ /'/;
+        die "can't handle path with ' in the name like \"$file\"\n" if $file =~ /'/; # ' (keep Xcode syntax highlighting happy)
 
         my $untouchedFile = $file;
         
@@ -90,15 +93,31 @@ for my $path (keys %paths) {
     }
 }
 
+sub getDirAndBase
+{
+    my ($path) = @_;
+    return ($1, $2) if $path =~ m|^(.+)/([^/]+)$|;
+    $path !~ m|/| or die "Could not parse path name $path.\n";
+    return (".", $path);
+}
+
 # Function to generate a diff.
 sub diff
 {
     my ($path) = @_;
+    my ($dir, $base) = getDirAndBase($path);
     my $errors = "";
-    open DIFF, "cvs diff -lNpu '$path' |" or die;
+    chdir $dir or die;
+    open DIFF, "cvs diff -lNpu '$base' |" or die;
     my $indexPath;
     while (<DIFF>) {
-        $indexPath = $1 if /^Index: (.*)/;
+        if (/^Index: (.*)/) {
+            $indexPath = $1;
+            if ($dir ne ".") {
+                $indexPath = "$dir/$indexPath";
+                s/Index: .*/Index: $indexPath/;
+            }
+        }
         if ($indexPath) {
             # Fix paths on diff, ---, and +++ lines to match preceding Index: line.
             s/\S+$/$indexPath/ if /^diff/;
@@ -112,6 +131,7 @@ sub diff
         }
     }
     close DIFF;
+    chdir $startDir or die;
     print STDERR $errors;
 }