You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/06/20 05:22:09 UTC
git commit: Rename create-release-branch ==> prepare-release-branch +
update JS on branches
Updated Branches:
refs/heads/master 6b27f3f8d -> 0e2b01996
Rename create-release-branch ==> prepare-release-branch + update JS on branches
Project: http://git-wip-us.apache.org/repos/asf/cordova-coho/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-coho/commit/0e2b0199
Tree: http://git-wip-us.apache.org/repos/asf/cordova-coho/tree/0e2b0199
Diff: http://git-wip-us.apache.org/repos/asf/cordova-coho/diff/0e2b0199
Branch: refs/heads/master
Commit: 0e2b019963a7362a2b03300c234f247eda269e63
Parents: 6b27f3f
Author: Andrew Grieve <ag...@chromium.org>
Authored: Wed Jun 19 23:20:58 2013 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Jun 19 23:20:58 2013 -0400
----------------------------------------------------------------------
coho | 125 ++++++++++++++++++++++++++++++++------------------------------
1 file changed, 65 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/0e2b0199/coho
----------------------------------------------------------------------
diff --git a/coho b/coho
index 36f6688..af2a6c8 100755
--- a/coho
+++ b/coho
@@ -165,6 +165,9 @@ var repoGroups = {
'active-platform': platformRepos.filter(function(r) { return !r.inactive }),
};
+var performGitPush = false;
+var needsGitPush = false;
+
function fatal() {
console.error.apply(console, arguments);
process.exit(1);
@@ -195,6 +198,12 @@ function logCwd() {
}
function execHelper(cmd, silent, allowError) {
+ if (/^git push/.exec(cmd)) {
+ if (!performGitPush) {
+ needsGitPush = true;
+ return;
+ }
+ }
if (!silent) {
logCwd();
console.log('Executing command:', cmd);
@@ -637,7 +646,43 @@ function configureReleaseCommandFlags(opt) {
return argv;
}
-function createReleaseBranchCommand() {
+var hasRunJake = false;
+
+function updateJsSnapshot(repo, version, branchName) {
+ function ensureJsIsBuilt() {
+ var cordovaJsRepo = getRepoById('js');
+ if (!hasRunJake) {
+ forEachRepo([cordovaJsRepo], function() {
+ var actualCurTag = retrieveCurrentTagName();
+ if (actualCurTag != version) {
+ fatal('Not preparing branches since cordova-js is not at the version tag. (it\'s at ' + actualCurTag + ')');
+ }
+ execHelper('jake');
+ hasRunJake = true;
+ });
+ }
+ }
+
+ if (platformRepos.indexOf(repo) == -1) {
+ return;
+ }
+
+ if (repo.cordovaJsPaths) {
+ ensureJsIsBuilt();
+ repo.cordovaJsPaths.forEach(function(jsPath) {
+ var src = path.join('..', 'cordova-js', 'pkg', repo.cordovaJsSrcName || ('cordova.' + repo.id + '.js'));
+ cpAndLog(src, jsPath);
+ });
+ if (pendingChangesExist()) {
+ execHelper('git commit -am "Update JS snapshot to version ' + version + ' (via coho)"');
+ execHelper('git push ' + repo.remoteName + ' ' + branchName);
+ }
+ } else if (allRepos.indexOf(repo) != -1) {
+ console.log('*** DO NOT KNOW HOW TO UPDATE cordova.js FOR THIS REPO ***');
+ }
+}
+
+function prepareReleaseBranchCommand() {
var argv = configureReleaseCommandFlags(optimist
.usage('Prepares release branches but does not create tags. This includes:\n' +
' 1. Creating the branch if it doesn\'t already exist\n' +
@@ -646,31 +691,20 @@ function createReleaseBranchCommand() {
'Command is safe to run multiple times, and can be run for the purpose\n' +
'of checking out existing release branches.\n' +
'\n' +
- 'Usage: $0 create-release-branch --version=2.8.0rc1')
+ 'Command can also be used to update the JS snapshot after release \n' +
+ 'branches have been created.\n' +
+ '\n' +
+ 'Usage: $0 prepare-release-branch --version=2.8.0rc1')
);
var repos = computeReposFromFlag(argv);
var version = argv.version;
- var performGitPush = argv.push;
- var needsGitPush = false;
+ performGitPush = argv.push;
var branchName = version.replace(/\d+(rc\d)?$/, 'x');
// First - perform precondition checks.
updateRepos(repos, [], true);
- var hasRunJake = false;
var cordovaJsRepo = getRepoById('js');
- function ensureJsIsBuilt() {
- forEachRepo([cordovaJsRepo], function() {
- var actualCurTag = retrieveCurrentTagName();
- if (actualCurTag != version) {
- fatal('Not preparing branches since cordova-js is not at the version tag. (it\'s at ' + actualCurTag + ')');
- }
- if (!hasRunJake) {
- execHelper('jake');
- hasRunJake = true;
- }
- });
- }
// Ensure cordova-js comes first.
var repoIndex = repos.indexOf(cordovaJsRepo);
@@ -683,46 +717,26 @@ function createReleaseBranchCommand() {
stashAndPop(repo, function() {
// git fetch + update master
updateRepos([repo], ['master'], false);
-
- if (platformRepos.indexOf(repo) != -1) {
- if (repo.cordovaJsPaths) {
- ensureJsIsBuilt();
- repo.cordovaJsPaths.forEach(function(jsPath) {
- var src = path.join('..', 'cordova-js', 'pkg', repo.cordovaJsSrcName || ('cordova.' + repo.id + '.js'));
- cpAndLog(src, jsPath);
- });
- if (pendingChangesExist()) {
- execHelper('git commit -am "Update JS snapshot to version ' + version + ' (via coho)"');
- if (performGitPush) {
- execHelper('git push ' + repo.remoteName + ' master');
- } else {
- needsGitPush = true;
- }
- }
- } else if (allRepos.indexOf(repo) != -1) {
- console.log('*** DO NOT KNOW HOW TO UPDATE cordova.js FOR THIS REPO ***');
- }
- }
+ // Update JS on master.
+ updateJsSnapshot(repo, version, 'master');
// Either create or pull down the branch.
if (remoteBranchExists(repo, branchName)) {
console.log('Remote branch already exists for repo: ' + repo.repoName);
- execHelper('git checkout ' + branchName);
+ // Check out and rebase.
updateRepos([repo], [branchName], true);
+ // Update JS on branch.
+ updateJsSnapshot(repo, version, branchName);
} else {
execHelper('git checkout -b ' + branchName);
- if (performGitPush) {
- execHelper('git push --set-upstream ' + repo.remoteName + ' ' + branchName);
- } else {
- needsGitPush = true;
- }
+ execHelper('git push --set-upstream ' + repo.remoteName + ' ' + branchName);
}
// Update the VERSION files.
var versionFilePath = 'VERSION';
if (repo.id == 'ios') {
- versionFilePath = 'CordovaLib/VERSION';
+ versionFilePath = path.join('CordovaLib', 'VERSION');
} else if (repo.id == 'blackberry') {
- versionFilePath = 'blackberry/VERSION';
+ versionFilePath = path.join('blackberry', 'VERSION');
}
if (fs.existsSync(versionFilePath)) {
console.log(repo.repoName + ': ' + 'Updating VERSION file.');
@@ -732,7 +746,7 @@ function createReleaseBranchCommand() {
fs.writeFileSync(versionFilePath, version + '\n');
}
if (repo.id == 'android') {
- shjs.sed('-i', /cordovaVersion.*=.*;/, 'cordovaVersion = "' + version + '";', 'framework/src/org/apache/cordova/Device.java');
+ shjs.sed('-i', /cordovaVersion.*=.*;/, 'cordovaVersion = "' + version + '";', path.join('framework', 'src', 'org', 'apache', 'cordova', 'Device.java'));
}
if (!pendingChangesExist()) {
console.log('VERSION file was already up-to-date.');
@@ -743,11 +757,7 @@ function createReleaseBranchCommand() {
if (pendingChangesExist()) {
execHelper('git commit -am "Set VERSION to ' + version + ' (via coho)"');
- if (performGitPush) {
- execHelper('git push ' + repo.remoteName + ' ' + branchName);
- } else {
- needsGitPush = true;
- }
+ execHelper('git push ' + repo.remoteName + ' ' + branchName);
}
});
});
@@ -767,8 +777,7 @@ function tagReleaseBranchCommand(argv) {
);
var repos = computeReposFromFlag(argv);
var version = argv.version;
- var performGitPush = argv.push;
- var needsGitPush = false;
+ performGitPush = argv.push;
var branchName = version.replace(/\d+(rc\d)?$/, 'x');
// First - perform precondition checks.
@@ -798,11 +807,7 @@ function tagReleaseBranchCommand(argv) {
} else {
execHelper('git tag ' + version);
}
- if (performGitPush) {
- execHelper('git push --tags ' + repo.remoteName + ' ' + branchName);
- } else {
- needsGitPush = true;
- }
+ execHelper('git push --tags ' + repo.remoteName + ' ' + branchName);
} else {
console.log('Repo ' + repo.repoName + ' is already tagged.');
}
@@ -869,9 +874,9 @@ function main() {
desc: 'Shows a list of valid values for the --repo flag.',
entryPoint: listReposCommand
}, {
- name: 'create-release-branch',
+ name: 'prepare-release-branch',
desc: 'Branches, updates JS, updates VERSION. Safe to run multiple times.',
- entryPoint: createReleaseBranchCommand
+ entryPoint: prepareReleaseBranchCommand
}, {
name: 'tag-release',
desc: 'Tags repos for a release.',