Fixes the manual merge instructions on github
当前为
// ==UserScript==
// @name Github manual merge
// @namespace https://github.com/lordwelch/
// @version 1.0
// @description Fixes the manual merge instructions on github
// @license MIT
// @author lordwelch
// @match https://github.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant none
// @run-at document-idle
// ==/UserScript==
(async function() {
'use strict';
console.log("script started");
var pushState = history.pushState;
var replaceState = history.replaceState;
history.pushState = function() {
pushState.apply(history, arguments);
window.dispatchEvent(new Event('pushstate'));
window.dispatchEvent(new Event('locationchange'));
};
history.replaceState = function() {
replaceState.apply(history, arguments);
window.dispatchEvent(new Event('replacestate'));
window.dispatchEvent(new Event('locationchange'));
};
window.addEventListener('popstate', function() {
window.dispatchEvent(new Event('locationchange'));
});
window.addEventListener('locationchange', async function(){
var location = document.location.pathname.match(/\/([^/]+)\/([^/]+)\/pull\/(\d+)$/);
if (location == null) {
console.log("incorrect page");
return;
}
var owner = location[1];
var repo = location[2];
var prNum = location[3];
var branchInstructions = document.querySelector("#clone-help-step-1");
var pushInstructions = document.querySelector("#clone-help-step-2 > span:nth-child(3)");
var urlObj = document.getElementById("clone-help-git-url");
var url = '';
var branchName = '';
var repoOwner = '';
while (branchInstructions == null || pushInstructions == null) {
location = document.location.pathname.match(/\/([^/]+)\/([^/]+)\/pull\/(\d+)$/);
if (location == null) {
console.log("incorrect page");
return;
}
owner = location[1];
repo = location[2];
prNum = location[3];
console.log("Waiting for pr to load");
await new Promise(r => setTimeout(r, 100));
branchInstructions = document.querySelector("#clone-help-step-1");
pushInstructions = document.querySelector("#clone-help-step-2 > span:nth-child(3)");
urlObj = document.getElementById("clone-help-git-url");
}
pushInstructions.remove();
var primaryBranch = branchInstructions.textContent.trim().split("\n")[0].split(" ").at(-1);
branchName = branchInstructions.textContent.trim().split(" ").at(-1);
url = urlObj.value.substring(0, urlObj.value.length - 4);
repoOwner = url.split("/").at(-2);
branchInstructions.textContent = `git stash\ngit checkout ${primaryBranch}\ngit fetch --force ${url} +${branchName}:${repoOwner}/${branchName}\ngit checkout ${repoOwner}/${branchName}`;
});
})();