Convert paths in environment variables back to msys-style inside commit-log-editor
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Jan 2011 17:11:18 +0000 (17:11 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Jan 2011 17:11:18 +0000 (17:11 +0000)
When this script gets run from inside git commit, msys-style paths in the environment will
have been turned into Windows-style paths with forward slashes. This screws up functions
like File::Spec->rel2abs, which seem to rely on $PWD having an msys-style path. We convert
the paths back to msys-style before doing anything else.

Fixes <http://webkit.org/b/48527> commit-log-editor uses full paths for section headers when
using msysgit's Perl and multiple ChangeLogs have been edited

Reviewed by David Kilzer.

* Scripts/commit-log-editor: Call fixEnvironment before doing anything else.
(fixEnvironment): Added. When run in msys in conjunction with git (i.e., when invoked from
inside git commit), convert Windows-style paths in the environment back to msys-style paths.

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

Tools/ChangeLog
Tools/Scripts/commit-log-editor

index 6b3f64160831dde0b201645d7498de816fb35903..12e4c172b17dc92314187682097a6a26c6a7336c 100644 (file)
@@ -1,3 +1,21 @@
+2011-01-19  Adam Roben  <aroben@apple.com>
+
+        Convert paths in environment variables back to msys-style inside commit-log-editor
+
+        When this script gets run from inside git commit, msys-style paths in the environment will
+        have been turned into Windows-style paths with forward slashes. This screws up functions
+        like File::Spec->rel2abs, which seem to rely on $PWD having an msys-style path. We convert
+        the paths back to msys-style before doing anything else.
+
+        Fixes <http://webkit.org/b/48527> commit-log-editor uses full paths for section headers when
+        using msysgit's Perl and multiple ChangeLogs have been edited
+
+        Reviewed by David Kilzer.
+
+        * Scripts/commit-log-editor: Call fixEnvironment before doing anything else.
+        (fixEnvironment): Added. When run in msys in conjunction with git (i.e., when invoked from
+        inside git commit), convert Windows-style paths in the environment back to msys-style paths.
+
 2011-01-20  Zoltan Horvath  <zoltan@webkit.org>
 
         [Win] Unreviewed build fix after r76248.
index f40295d72a4f07f33608a40f1e38a065b5783759..2dda7e21e5a4941a66419c84626ae73346b9768c 100755 (executable)
@@ -38,6 +38,7 @@ use Term::ReadKey;
 use VCSUtils;
 use webkitdirs;
 
+sub fixEnvironment();
 sub normalizeLineEndings($$);
 sub removeLongestCommonPrefixEndingInDoubleNewline(\%);
 sub isCommitLogEditor($);
@@ -59,6 +60,8 @@ if (!$log) {
     usage();
 }
 
+fixEnvironment();
+
 my $baseDir = baseProductDir();
 
 my $editor = $ENV{SVN_LOG_EDITOR};
@@ -282,6 +285,21 @@ if ($foundComment) {
 
 unlink "$log.edit";
 
+sub fixEnvironment()
+{
+    return unless isMsys() && isGit();
+
+    # When this script gets run from inside git commit, msys-style paths in the
+    # environment will have been turned into Windows-style paths with forward
+    # slashes. This screws up functions like File::Spec->rel2abs, which seem to
+    # rely on $PWD having an msys-style path. We convert the paths back to
+    # msys-style here by transforming "c:/foo" to "/c/foo" (e.g.). See
+    # <http://webkit.org/b/48527>.
+    foreach my $key (keys %ENV) {
+        $ENV{$key} =~ s#^([[:alpha:]]):/#/$1/#;
+    }
+}
+
 sub normalizeLineEndings($$)
 {
     my ($string, $endl) = @_;