Git Brancher

by Johan Vandeplas

HTML

<label for="blessed">Target Branch</label>
<input type="text" name="blessed" value="RC" />
<label for="ticket">Ticket</label>
<input type="text" name="ticket" value="feature/CERES-3488" />
<label for="newBranchCommitMergeToDev">New Branch Commit Merge To Dev</label>
<div class="textarea" contentEditable="true" name="newBranchCommitMergeToDev"></div>
<label for="commitMergeToDev">commit Merge To Dev</label>
<div class="textarea" contentEditable="true" name="commitMergeToDev"></div>
<label for="checkoutPullAndPullBlessed">Checkout Pull Blessed</label>
<div class="textarea" contentEditable="true" name="checkoutPullAndPullBlessed"></div>

<label for="renameRemote">Rename Remote</label>
<input type="text" name="oldName" value="oldName" />
<div class="textarea" contentEditable="true" name="renameRemote"></div>

CSS

label, input, .textarea {
    font-family: monospace;
    display: block;
    clear: both;
    width: calc(100% - 10px);
    margin: 5px;
}
.textarea {
    display:inline-block;
    border: solid 1px #AAA;
    padding: 2px 1px;
}

JavaScript

$('[name=ticket], [name=oldName], [name=blessed]').on('keyup', function () {
    var ticket = $('[name=ticket]').val(),
        oldName = $('[name=oldName]').val(),
        blessed= $('[name=blessed]').val();
    
    var newBranchCommitMergeToDev = [
        "git checkout -b " + ticket + ";",
        "git commit -am '" + ticket + "';",
        "git push --set-upstream origin " + ticket + ";",
        "git push;",
        "stash pull-request " + ticket + " "+blessed+";",
        "git checkout develop;",
        "git pull;",
        "git merge --no-ff --no-edit " + ticket + ";",
        "git push;",
        "git checkout "+blessed+";",
        "git pull;"].join(' ');
    var commitMergeToDev = [
        "git commit -am '" + ticket + "';",
        "git push;",
        "git checkout develop;",
        "git pull;",
        "git merge --no-ff --no-edit " + ticket + ";",
        "git push;",
        "git checkout "+blessed+";",
        "git pull;"].join(' ');

    var checkoutPullAndPullBlessed = [
        "git checkout " + ticket + ";",
        "git pull;",
        "git pull --no-edit origin "+blessed+";"].join(' ');

    var renameRemote = [
        "git branch " + ticket + " origin/" + oldName + ";",
        "git push origin --set-upstream " + ticket + ";",
        "git push origin :" + oldName + ";"].join(' ');


    $('[name=newBranchCommitMergeToDev]').text(newBranchCommitMergeToDev);
    $('[name=commitMergeToDev]').text(commitMergeToDev);
    $('[name=checkoutPullAndPullBlessed]').text(checkoutPullAndPullBlessed);
	$('[name=renameRemote]').text(renameRemote);
});