You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2017/02/02 00:20:58 UTC

cordova-coho git commit: added createNewBranch gitutil. added getReleaseBranchFromVersion versionutil. platform release uses new getReleaseBranchFromVersion method. determine whether plugin repos have release branch in them or not, and prompt user to man

Repository: cordova-coho
Updated Branches:
  refs/heads/plugins-releaser 11a5e301e -> 8aa1f7f16


added createNewBranch gitutil. added getReleaseBranchFromVersion versionutil. platform release uses new getReleaseBranchFromVersion method. determine whether plugin repos have release branch in them or not, and prompt user to manually merge/cherry-pick in the case that release branch already exists, otherwise, create the release branch.


Project: http://git-wip-us.apache.org/repos/asf/cordova-coho/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-coho/commit/8aa1f7f1
Tree: http://git-wip-us.apache.org/repos/asf/cordova-coho/tree/8aa1f7f1
Diff: http://git-wip-us.apache.org/repos/asf/cordova-coho/diff/8aa1f7f1

Branch: refs/heads/plugins-releaser
Commit: 8aa1f7f16e79e6a0d8a9cfc064241dfa18408c92
Parents: 11a5e30
Author: filmaj <ma...@gmail.com>
Authored: Wed Feb 1 16:20:50 2017 -0800
Committer: filmaj <ma...@gmail.com>
Committed: Wed Feb 1 16:20:50 2017 -0800

----------------------------------------------------------------------
 src/gitutil.js          |  4 ++++
 src/platform-release.js | 11 ++-------
 src/plugin-release.js   | 55 ++++++++++++++++++++++++++++++++------------
 src/versionutil.js      |  7 ++++++
 4 files changed, 53 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/8aa1f7f1/src/gitutil.js
----------------------------------------------------------------------
diff --git a/src/gitutil.js b/src/gitutil.js
index 058ff96..dcc7fcd 100644
--- a/src/gitutil.js
+++ b/src/gitutil.js
@@ -136,6 +136,10 @@ exports.gitCheckout = function*(branchName) {
     }
 }
 
+exports.createNewBranch = function*(branchName) {
+    return yield executil.execHelper(executil.ARGS('git branch ', branchName));
+}
+
 exports.localBranchExists = function*(name) {
     return !!(yield executil.execHelper(executil.ARGS('git branch --list ' + name), true));
 }

http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/8aa1f7f1/src/platform-release.js
----------------------------------------------------------------------
diff --git a/src/platform-release.js b/src/platform-release.js
index 3ea90b1..9e9df33 100644
--- a/src/platform-release.js
+++ b/src/platform-release.js
@@ -43,13 +43,6 @@ function createPlatformDevVersion(version) {
     return parts.join('.') + '-dev';
 }
 
-function getVersionBranchName(version) {
-    if (/-dev$/.test(version)) {
-        return 'master';
-    }
-    return version.replace(/\d+(-?rc\d)?$/, 'x');
-}
-
 function cpAndLog(src, dest) {
     print('Coping File:', src, '->', dest);
     // Throws upon failure.
@@ -215,7 +208,7 @@ exports.prepareReleaseBranchCommand = function*() {
     yield repoutil.forEachRepo(repos, function*(repo) {
         var platform = repo.id;
         var version = yield handleVersion(repo, argv.version,true);
-        var branchName = getVersionBranchName(version);
+        var branchName = versionutil.getReleaseBranchNameFromVersion(version);
 
         yield gitutil.stashAndPop(repo, function*() {
             // git fetch + update master
@@ -296,7 +289,7 @@ exports.tagReleaseBranchCommand = function*(argv) {
     var repos = flagutil.computeReposFromFlag(argv.r);
     var version = flagutil.validateVersionString(argv.version);
     var pretend = argv.pretend;
-    var branchName = getVersionBranchName(version);
+    var branchName = versionutil.getReleaseBranchNameFromVersion(version);
 
     // First - perform precondition checks.
     yield repoupdate.updateRepos(repos, [], true);

http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/8aa1f7f1/src/plugin-release.js
----------------------------------------------------------------------
diff --git a/src/plugin-release.js b/src/plugin-release.js
index 2a0a7e4..6b64b2a 100644
--- a/src/plugin-release.js
+++ b/src/plugin-release.js
@@ -359,31 +359,63 @@ function *interactive_plugins_release() {
                 console.log('Writing out new release notes and plugin versions (if applicable)...');
                 yield repoutil.forEachRepo(plugin_repos, function*(repo) {
                     var plugin_name = repo.repoName;
-                    if (plugin_data[repo.repoName].current_release != release_notes[plugin_name + '-version']) {
+                    if (plugin_data[plugin_name].current_release != release_notes[plugin_name + '-version']) {
                         // Overwrite plugin version if, after release notes review, RM decided on a different version.
-                        plugin_data[repo.repoName].current_release = release_notes[plugin_name + '-version'];
-                        yield versionutil.updateRepoVersion(repo, plugin_data[repo.repoName].current_release, {commitChanges:false});
+                        plugin_data[plugin_name].current_release = release_notes[plugin_name + '-version'];
+                        yield versionutil.updateRepoVersion(repo, plugin_data[plugin_name].current_release, {commitChanges:false});
                     }
                     fs.writeFileSync(tweak_release_notes.FILE, release_notes[plugin_name], {encoding: 'utf8'});
                     linkify.file(tweak_release_notes.FILE);
                     /* - commit changes to versions and release notes together with description '$JIRA Updated version and release notes for release $v'
                      * - tag each plugin repo with $v*/
                     if (yield gitutil.pendingChangesExist()) {
-                        yield gitutil.commitChanges(plugins_release_issue.key + ' Updated version and RELEASENOTES.md for release ' + plugin_data[repo.repoName].current_release);
-                        yield gitutil.tagRepo(plugin_data[repo.repoName].current_release);
+                        yield gitutil.commitChanges(plugins_release_issue.key + ' Updated version and RELEASENOTES.md for release ' + plugin_data[plugin_name].current_release);
+                        yield gitutil.tagRepo(plugin_data[plugin_name].current_release);
                     } else {
-                        console.warn('No pending changes detected for ' + repo.repoName + '; that\'s probably not good eh?');
+                        console.warn('No pending changes detected for ' + plugin_name + '; that\'s probably not good eh?');
                     }
                 });
             })();
+        }).then(function() {
+            /* 10. Create release branch.Check if release branch, which would be named in the form "major.minor.x" (i.e. 2.3.x) already exists */
+            return co.wrap(function *() {
+                var repos_with_existing_release_branch = [];
+                yield repoutil.forEachRepo(plugin_repos, function*(repo) {
+                    var plugin_name = repo.repoName;
+                    var plugin_version = plugin_data[plugin_name].current_release;
+                    var release_branch_name = versionutil.getReleaseBranchNameFromVersion(plugin_version);
+                    if (yield gitutil.remoteBranchExists(repo, release_branch_name)) {
+                        repos_with_existing_release_branch.push(repo);
+                    } else {
+                        yield gitutil.createNewBranch(release_branch_name);
+                        console.log('Created branch', release_branch_name, 'in repo', plugin_name);
+                    }
+                });
+            })();
+        }).then(function(repos_with_existing_release_branch) {
+            // Here we are passed an array of repos that already had release branches created prior to starting the release process here.
+            // Our mission in this clause, should we choose to accept it, is to merge master back into the branch. But, this can be dangerous! 
+            // Should we ask the user to handle the merge / cherry pick, then? Or should we merge automatically?
+            console.warn('Some release branches already exist!');
+            console.warn('You will need to handle these repos manually!');
+            var prompts = [];
+            repos_with_existing_branch_name.forEach(function(repo) {
+                var plugin_name = repo.repoName;
+                var rb = versionutil.getReleaseBranchFromVersion(plugin_data[plugin_name].current_version)
+                prompts.push({
+                    type: 'confirm',
+                    name: 'rb_proceed_' + plugin_name,
+                    message: plugin_name + ' already has an existing release branch ' + rb + '. You will need to manually merge or cherry-pick the master branch into the ' + rb + ' branch. Once you have done this (probably in a separate shell or command prompt), hit Enter to continue.'
+                });
+            });
+            return inquirer.prompt(prompts);
         });
     }, function(auth_err) {
         var keys = Object.keys(auth_err);
         console.error('ERROR! There was a problem connecting to JIRA, received a', auth_err.statusCode, 'status code.');
         process.exit(1);
     });
-    /* 10. Create release branch. if this is a patch release, it may already exist! in that case, merge master back into this existing release branch.
-     * 11. Increment plugin versions back on the master branch to include -dev.. i think?
+    /* 11. Increment plugin versions back on the master branch to include -dev
      * 12. Push tags, release branch, and master branch changes.
      * 13. Publish to apache svn:
      *   - repo-clone the dist and dist/dev svn repos
@@ -424,13 +456,6 @@ function createPlatformDevVersion(version) {
     return parts.join('.') + '-dev';
 }
 
-function getVersionBranchName(version) {
-    if (/-dev$/.test(version)) {
-        return 'master';
-    }
-    return version.replace(/\d+(-?rc\d)?$/, 'x');
-}
-
 function cpAndLog(src, dest) {
     print('Coping File:', src, '->', dest);
     // Throws upon failure.

http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/8aa1f7f1/src/versionutil.js
----------------------------------------------------------------------
diff --git a/src/versionutil.js b/src/versionutil.js
index 840fecb..72c2700 100644
--- a/src/versionutil.js
+++ b/src/versionutil.js
@@ -70,6 +70,13 @@ function updatePlatformsConfig(newValues) {
 }
 exports.updatePlatformsConfig = updatePlatformsConfig;
 
+exports.getReleaseBranchNameFromVersion = function(version) {
+    if (/-dev$/.test(version)) {
+        return 'master';
+    }
+    return version.replace(/\d+(-?rc\d)?$/, 'x');
+}
+
 /**
  * Updates VERSION file, version executable script, package.json and
  * plugin.xml(s) using specified version. Also commits change made to the repo


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org