Hi,
This patch will prepend the git branch name if you are in one to the
$baseProductDir if you have the appropriate key/value pair in your git config
file.
The use case is a developer who is switching between branches and testing but
doesn't want to clobber his build everytime. The default is off and you can
override the global setting on a branch by branch basis.
Comments and review welcome...
Adam
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 3067d7c..9ad38d4 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,12 @@
+2007-11-19 Adam Treat <[EMAIL PROTECTED]>
+
+ Reviewed by NOBODY (OOPS!).
+
+ * Script changes for usage with git branches.
+
+ * Scripts/VCSUtils.pm:
+ * Scripts/webkitdirs.pm:
+
2007-11-12 Adam Roben <[EMAIL PROTECTED]>
* Scripts/update-webkit-localizable-strings: Changed to only scan the
diff --git a/WebKitTools/Scripts/VCSUtils.pm b/WebKitTools/Scripts/VCSUtils.pm
index 3ba40e1..731b3fe 100644
--- a/WebKitTools/Scripts/VCSUtils.pm
+++ b/WebKitTools/Scripts/VCSUtils.pm
@@ -44,6 +44,8 @@ our @EXPORT_OK;
my $isGit;
my $isSVN;
+my $gitBranch;
+my $isGitBranchBuild;
sub isGitDirectory($)
{
@@ -59,6 +61,32 @@ sub isGit()
return $isGit;
}
+sub gitBranch()
+{
+ unless (defined $gitBranch) {
+ chomp($gitBranch = `git symbolic-ref HEAD`);
+ $gitBranch =~ s/refs\/heads\///;
+ $gitBranch =~ s/master//;
+ }
+
+ return $gitBranch;
+}
+
+sub isGitBranchBuild()
+{
+ my $branch = gitBranch();
+ chomp(my $override = `git config branch.$branch.webkitbranchbuild`);
+ return 1 if $override eq "true";
+ return 0 if $override eq "false";
+
+ unless (defined $isGitBranchBuild) {
+ chomp(my $gitBranchBuild = `git config --bool core.webkitbranchbuild`);
+ $isGitBranchBuild = $gitBranchBuild eq "true";
+ }
+
+ return $isGitBranchBuild;
+}
+
sub isSVNDirectory($)
{
my ($dir) = @_;
diff --git a/WebKitTools/Scripts/webkitdirs.pm b/WebKitTools/Scripts/webkitdirs.pm
index a2b1e32..1ba0c27 100644
--- a/WebKitTools/Scripts/webkitdirs.pm
+++ b/WebKitTools/Scripts/webkitdirs.pm
@@ -31,6 +31,7 @@ use warnings;
use FindBin;
use File::Basename;
use POSIX;
+use VCSUtils;
BEGIN {
use Exporter ();
@@ -123,6 +124,12 @@ sub determineBaseProductDir
if (!defined($baseProductDir)) {
$baseProductDir = "$sourceDir/WebKitBuild";
+
+ if (isGit() && isGitBranchBuild()) {
+ my $branch = gitBranch();
+ $baseProductDir = "$baseProductDir/$branch";
+ }
+
@baseProductDirOption = ("SYMROOT=$baseProductDir", "OBJROOT=$baseProductDir") if (isOSX());
if (isCygwin()) {
my $dosBuildPath = `cygpath --windows \"$baseProductDir\"`;
@@ -698,11 +705,17 @@ sub buildQMakeProject(@)
my $dir = baseProductDir();
if (! -d $dir) {
- mkdir $dir or die "Failed to create product directory " . $dir;
+ system "mkdir", "-p", "$dir";
+ if (! -d $dir) {
+ die "Failed to create product directory " . $dir;
+ }
}
$dir = $dir . "/$config";
if (! -d $dir) {
- mkdir $dir or die "Failed to create build directory " . $dir;
+ system "mkdir", "-p", "$dir";
+ if (! -d $dir) {
+ die "Failed to create build directory " . $dir;
+ }
}
chdir $dir or die "Failed to cd into " . $dir . "\n";
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-dev