This adds a link to the fork's branch on the GitHub "Comparing changes" page. See https://stackoverflow.com/questions/77623282/how-do-i-get-my-remote-branch-url-from-the-github-create-pull-request-page for more details.
目前為
// ==UserScript==
// @name GitHub Comparing Changes: add link to fork's branch
// @namespace http://tampermonkey.net/
// @version 0.1
// @description This adds a link to the fork's branch on the GitHub "Comparing changes" page. See https://stackoverflow.com/questions/77623282/how-do-i-get-my-remote-branch-url-from-the-github-create-pull-request-page for more details.
// @author DanKaplanSES
// @match https://github.com/*/*/compare/*...*
// @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
// @require https://code.jquery.com/jquery-3.7.1.min.js
// @grant none
// @license MIT
// ==/UserScript==
jQuery.noConflict(true)(function($) {
function modifyPage() {
const isPageAlreadyModified = $(`#browse-link-0`).length > 0;
if (isPageAlreadyModified) {
return;
}
const browseRepoHtml = `<div class="browse-repo"><a href="#" target="_blank">Browse Repo</a></div>`;
const browseBranchHtml = `<div class="browse-branch"><a href="#" target="_blank">Browse Branch</a></div>`;
$(`.range-cross-repo-pair details`).wrap(`<div class="details-container"></div>`);
$(`.details-container`).each(function (index) {
const isIndexEven = index % 2 === 0;
const html = isIndexEven ? browseRepoHtml : browseBranchHtml;
const href = buildHref(isIndexEven ? "repo" : "branch", index);
$(this).css({"display": `inline-block`})
.append(html).css({"text-align": `center`})
.find(`a`).attr({id: `browse-link-${index}`, href});
});
$(`.range-editor .pre-mergability, .range-editor .d-inline-block`).css({"vertical-align": `top`});
}
function buildHref(hrefType, index) {
switch (hrefType) {
case "repo":
return `/` + $(`.css-truncate-target`)[index].textContent;
case "branch":
return `/` + $(`.css-truncate-target`)[index - 1].textContent + `/tree/` + $(`.css-truncate-target`)[index].textContent;
default:
throw new Error(`Unexpected hrefType: ${hrefType}`);
}
}
setInterval(modifyPage, 1500);
});