2010-05-01 Daniel Bates <dbates@rim.com>
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 May 2010 22:44:25 +0000 (22:44 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 May 2010 22:44:25 +0000 (22:44 +0000)
        Reviewed by Chris Jerdonek.

        https://bugs.webkit.org/show_bug.cgi?id=38423

        Adds infrastructure to change the file mode of a file using
        the appropriate SCM-specific routines.

        No functionality was changed, so no new tests.

        * Scripts/VCSUtils.pm: Added subroutines scmToggleExecutableBit,
        scmAddExecutableBit, and scmRemoveExecutableBit.
        * Scripts/svn-apply: Check for the hash key executableBitDelta
        and toggle the executable bit.
        * Scripts/svn-unapply: Ditto.

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

WebKitTools/ChangeLog
WebKitTools/Scripts/VCSUtils.pm
WebKitTools/Scripts/svn-apply
WebKitTools/Scripts/svn-unapply

index 30ae7af..e76aa08 100644 (file)
@@ -1,3 +1,20 @@
+2010-05-01  Daniel Bates  <dbates@rim.com>
+
+        Reviewed by Chris Jerdonek.
+
+        https://bugs.webkit.org/show_bug.cgi?id=38423
+
+        Adds infrastructure to change the file mode of a file using
+        the appropriate SCM-specific routines.
+
+        No functionality was changed, so no new tests.
+
+        * Scripts/VCSUtils.pm: Added subroutines scmToggleExecutableBit,
+        scmAddExecutableBit, and scmRemoveExecutableBit.
+        * Scripts/svn-apply: Check for the hash key executableBitDelta
+        and toggle the executable bit.
+        * Scripts/svn-unapply: Ditto.
+
 2010-04-30  Chris Marrin  <cmarrin@apple.com>
 
         Reviewed by Simon Fraser.
 2010-04-30  Chris Marrin  <cmarrin@apple.com>
 
         Reviewed by Simon Fraser.
index 08a1aa0..dff1c4d 100644 (file)
@@ -97,6 +97,40 @@ sub exitStatus($)
     return WEXITSTATUS($returnvalue);
 }
 
     return WEXITSTATUS($returnvalue);
 }
 
+# Note, this method will not error if the file corresponding to the path does not exist.
+sub scmToggleExecutableBit
+{
+    my ($path, $executableBitDelta) = @_;
+    return if ! -e $path;
+    if ($executableBitDelta == 1) {
+        scmAddExecutableBit($path);
+    } elsif ($executableBitDelta == -1) {
+        scmRemoveExecutableBit($path);
+    }
+}
+
+sub scmAddExecutableBit($)
+{
+    my ($path) = @_;
+
+    if (isSVN()) {
+        system("svn", "propset", "svn:executable", "on", $path) == 0 or die "Failed to run 'svn propset svn:executable on $path'.";
+    } elsif (isGit()) {
+        chmod(0755, $path);
+    }
+}
+
+sub scmRemoveExecutableBit($)
+{
+    my ($path) = @_;
+
+    if (isSVN()) {
+        system("svn", "propdel", "svn:executable", $path) == 0 or die "Failed to run 'svn propdel svn:executable $path'.";
+    } elsif (isGit()) {
+        chmod(0664, $path);
+    }
+}
+
 sub isGitDirectory($)
 {
     my ($dir) = @_;
 sub isGitDirectory($)
 {
     my ($dir) = @_;
index 13b215b..a86c123 100755 (executable)
@@ -359,6 +359,8 @@ sub patch($)
             system("svn", "stat", "$fullPath.orig") if isSVN() && -e "$fullPath.orig";
         }
     }
             system("svn", "stat", "$fullPath.orig") if isSVN() && -e "$fullPath.orig";
         }
     }
+
+    scmToggleExecutableBit($fullPath, $diffHashRef->{executableBitDelta}) if defined($diffHashRef->{executableBitDelta});
 }
 
 sub removeDirectoriesIfNeeded()
 }
 
 sub removeDirectoriesIfNeeded()
index d5b95e8..475bf68 100755 (executable)
@@ -208,6 +208,8 @@ sub patch($)
             system "svn", "revert", $fullPath;
         }
     }
             system "svn", "revert", $fullPath;
         }
     }
+
+    scmToggleExecutableBit($fullPath, -1 * $diffHashRef->{executableBitDelta}) if defined($diffHashRef->{executableBitDelta});
 }
 
 sub revertDirectories()
 }
 
 sub revertDirectories()