Created
October 11, 2012 00:40
-
-
Save philwebb/3869440 to your computer and use it in GitHub Desktop.
Manual GitHub Merge
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
// ==UserScript== | |
// @name github-manual-merge | |
// @namespace http://springsource.org | |
// @description Adds manual merge commands to pull requests | |
// @include https://github.com/SpringSource/spring-framework/pull/* | |
// @version 1 | |
// @grant none | |
// ==/UserScript== | |
function selectText(e) { | |
if (document.selection) { | |
var range = document.body.createTextRange(); | |
range.moveToElementText(this); | |
range.select(); | |
} else if (window.getSelection) { | |
var range = document.createRange(); | |
range.selectNode(this); | |
window.getSelection().addRange(range); | |
} | |
} | |
var pullHeaderElement = document.getElementById("pull-head") | |
var metas = document.getElementsByTagName('meta'); | |
var repository | |
for (i=0; i<metas.length; i++) { | |
if (metas[i].getAttribute("property") == "og:title") { | |
repository = metas[i].getAttribute("content"); | |
} | |
} | |
var username = document.evaluate("div/p/span[2]/span/span", | |
pullHeaderElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) | |
.singleNodeValue.textContent.trim(); | |
var branch = document.evaluate("div/p/span[2]/span[2]", | |
pullHeaderElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) | |
.singleNodeValue.textContent.trim(); | |
var requestnumber= document.evaluate("div/div/span[2]", | |
pullHeaderElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) | |
.singleNodeValue.textContent.trim().substring(1); | |
var mergeDiv = document.createElement('div'); | |
var mergeInfo1 = document.createElement('pre'); | |
var mergeInfo2 = document.createElement('pre'); | |
var mergeInfo3 = document.createElement('pre'); | |
mergeDiv.appendChild(mergeInfo1); | |
mergeDiv.appendChild(mergeInfo2); | |
mergeDiv.appendChild(mergeInfo3); | |
mergeInfo1.setAttribute("style", "margin-bottom: 12px;"); | |
mergeInfo1.innerHTML = | |
'git remote add ' + username + ' https://github.com/' + username + '/' + repository + '.git\n' + | |
'git fetch ' + username + '\n'+ | |
'git checkout --track ' + username + '/' + branch + ' -b ' + branch + '\n'; | |
mergeInfo1.addEventListener("click", selectText, false); | |
mergeInfo2.setAttribute("style", "margin-bottom: 12px;"); | |
mergeInfo2.innerHTML = | |
'git rebase master'; | |
mergeInfo2.addEventListener("click", selectText, false); | |
mergeInfo3.innerHTML = | |
'git checkout master\n'+ | |
'git merge --no-ff --log -m "Merge pull request #' + requestnumber + ' from ' + username + '/' + branch + '" ' + branch; | |
mergeInfo3.addEventListener("click", selectText, false); | |
mergeDiv.setAttribute("class", "pull-head"); | |
mergeDiv.setAttribute("style", "padding: 10px;"); | |
pullHeaderElement.parentNode.insertBefore(mergeDiv, pullHeaderElement.nextSibling); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment