Move the guts of determineCurrentSVNRevision to VCSUtils as svnRevisionForDirectory,
[WebKit-https.git] / WebKitTools / Scripts / VCSUtils.pm
index 26401f4..5e92821 100644 (file)
@@ -104,6 +104,22 @@ sub isSVN()
     return $isSVN;
 }
 
+sub svnRevisionForDirectory($)
+{
+    my ($dir) = @_;
+    my $revision;
+
+    if (isSVNDirectory($dir)) {
+        my $svnInfo = `LC_ALL=C svn info $dir | grep Revision:`;
+        ($revision) = ($svnInfo =~ m/Revision: (\d+).*/g);
+    } elsif (isGitDirectory($dir)) {
+        my $gitLog = `cd $dir && LC_ALL=C git log --grep='git-svn-id: ' -n 1 | grep git-svn-id:`;
+        ($revision) = ($gitLog =~ m/ +git-svn-id: .+@(\d+) /g);
+    }
+    die "Unable to determine current SVN revision in $dir" unless (defined $revision);
+    return $revision;
+}
+
 my $gitRoot;
 sub makeFilePathRelative($)
 {
@@ -111,11 +127,9 @@ sub makeFilePathRelative($)
     return $path unless isGit();
 
     unless (defined $gitRoot) {
-        chomp($gitRoot = `git rev-parse --git-dir`);
-        $gitRoot =~ s/\.git$//;
+        chomp($gitRoot = `git rev-parse --show-cdup`);
     }
-    my $result = File::Spec->abs2rel(File::Spec->rel2abs($path, $gitRoot));
-    return $result;
+    return $gitRoot . $path;
 }
 
 1;