cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fil...@apache.org
Subject 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
Date Thu, 02 Feb 2017 00:20:58 GMT
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 <maj.fil@gmail.com>
Authored: Wed Feb 1 16:20:50 2017 -0800
Committer: filmaj <maj.fil@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


Mime
View raw message