Created
June 5, 2015 03:19
-
-
Save happyguohua/41ac69fc3fbd55128410 to your computer and use it in GitHub Desktop.
create git branch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var spawn = require('child_process').spawn, | |
| fs = require('fs'), | |
| commandArray = [ | |
| 'git help', | |
| 'git init', | |
| 'git remote add origin ssh://git@stash.englishtown.com:7999/comm/evc-ui-library.git', | |
| 'git fetch', | |
| 'git branch -r' | |
| ]; | |
| var releaseVersion = '2015.25-1'; | |
| var baseBranchName; | |
| fs.stat('tmp', function(error, stats) { | |
| if (error || !stats.isDirectory()) { | |
| function setupWorkspace() { | |
| commandArray.reduce(function(inited, task) { | |
| return inited.then(function() { | |
| var spawnParameter = task.split(' '); | |
| return setupEvent(spawn(spawnParameter[0], spawnParameter.slice(1), {cwd: './tmp'})); | |
| }); | |
| }, Promise.resolve()) | |
| .then(function(baseBranch) { | |
| if (baseBranch) { | |
| baseBranchName = baseBranch.baseName; | |
| return setupEvent(spawn('git', ['checkout', | |
| 'origin/' + baseBranch.baseName + baseBranch.baseVersion], {cwd: './tmp'})); | |
| } else { | |
| return setupEvent(spawn('git', ['checkout', | |
| 'origin/team/ateam/develop'], {cwd: './tmp'})); | |
| } | |
| }) | |
| .then(function() { | |
| return setupEvent(spawn('git', ['checkout', '-b', baseBranchName + releaseVersion], {cwd: './tmp'})); | |
| }); | |
| } | |
| fs.mkdir('tmp', function(error) { | |
| if (error) return; | |
| setupWorkspace(); | |
| }) | |
| } else { | |
| setupWorkspace(); | |
| } | |
| }) | |
| function setupEvent(processID) { | |
| return new Promise(function(resolve) { | |
| var result = ''; | |
| var baseBranch; | |
| processID.stdout.on('data', function(chunk) { | |
| result += chunk; | |
| }); | |
| processID.stdout.on('end', function() { | |
| var resultArray = result.toString().split(/\s+/g); | |
| baseBranch = getBaseBranch(resultArray); | |
| }); | |
| processID.stderr.on('data', function(chunk) { | |
| console.error(chunk.toString()); | |
| }); | |
| processID.stdout.on('close', function() { | |
| console.log('close'); | |
| resolve(baseBranch.baseName ? baseBranch : ''); | |
| }); | |
| }); | |
| } | |
| function getBaseBranch(branchs) { | |
| var regBranch = /^(origin\/)((?:team\/ateam\/|)release\/)([\d.-]+)$/i, | |
| lastReleaseBranchName, | |
| lastReleaseVersion; | |
| branchs.forEach(function(branch) { | |
| var match = regBranch.exec(branch.trim()); | |
| if (match) { | |
| lastReleaseBranchName = match[2]; | |
| lastReleaseVersion = match[3]; | |
| } | |
| }); | |
| return { | |
| baseName: lastReleaseBranchName, | |
| baseVersion: lastReleaseVersion | |
| } | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment