This adds a link to the fork's branch on the GitHub "Comparing changes" page (AKA the "Create a Pull Request" 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 Add repo/branch links to GitHub's "Comparing Changes" page
// @namespace http://tampermonkey.net/
// @version 0.6
// @description This adds a link to the fork's branch on the GitHub "Comparing changes" page (AKA the "Create a Pull Request" 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/*
// @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==
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>`;
jQuery.noConflict(true)(function ($) {
function modifyPage() {
if (location.pathname.indexOf(`/compare/`) === -1) {
return;
}
const isPageAlreadyModified = $(`#browse-link-0`).length > 0;
if (isPageAlreadyModified) {
return;
}
$(`.range-cross-repo-pair details`).wrap(
`<div class="details-container"></div>`
);
$(`.details-container`).each(function (index) {
const containerType =
$(this).find(`summary.branch`).length > 0 ? `branch` : `repo`;
const html = containerType === `repo` ? browseRepoHtml : browseBranchHtml;
const href = hrefString(containerType, index);
$(this)
.css({ 'display': `inline-block` })
.append(html)
.css({ 'text-align': `center` })
.find(`a`)
.attr({ id: `browse-link-${index}`, href });
const containerContentsHidden = $(this).find(`details`).is(`:hidden`);
if (containerContentsHidden) {
$(this).hide();
}
});
$(`.range-editor .pre-mergability, .range-editor .d-inline-block`).css({
'vertical-align': `top`,
});
}
function hrefString(containerType, index) {
switch (containerType) {
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}`);
}
}
const pageReadyForModification =
$(`.range-cross-repo-pair details`).length > 0;
if (pageReadyForModification) {
modifyPage();
}
setInterval(modifyPage, 1500);
});