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 webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo/webkit-dev