您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a "Clone in SourceTree" link to github pages. Based on jamesgarfield/GitHubSourceTree.
// ==UserScript== // @name GitHubSourceTreeLink // @namespace https://github.com/cunneen // @version 1.0.0 // @description Adds a "Clone in SourceTree" link to github pages. Based on jamesgarfield/GitHubSourceTree. // @respository https://github.com/cunneen/GitHubSourceTreeLink // @match https://github.com/* // @match https://*.github.com/* // @grant none // @license MIT // @copyright 2025, Mike Cunneen // @run-at document-idle // @homepageURL https://github.com/cunneen/GitHubSourceTreeLink // @supportURL https://github.com/cunneen/GitHubSourceTreeLink/issues // ==/UserScript== /* jshint esversion: 11 */ //Firefox/GreaseMonkey apppears to not like IIFEs, so use of a named function is required ghst(); function ghst(){ const $ = document.querySelectorAll.bind(document); //Defining constants const sourceTreeUrlPrefix = "x-github-client://openRepo/"; //GitHub's "Code" dropdown Button const gitHubNode = $("react-partial[partial-name='repos-overview'] button[aria-haspopup=true][aria-describedBy$='-loading-announcement'][data-variant='primary']")[0]; //This is the node before which we're going to insert the new button const insertBeforeNode = document.querySelector(".Layout-sidebar > div > div:first-child h2"); const parentNode = insertBeforeNode.parentNode; const sourceTreeNode = document.createElement("a"); const cloneURL = getSelectedCloneUrl(); sourceTreeNode.href = sourceTreeUrlPrefix + cloneURL; sourceTreeNode.innerHTML = '<span class="octicon octicon-device-desktop"></span> Clone in SourceTree'; parentNode.insertBefore(sourceTreeNode, insertBeforeNode); //Function returns currently selected clone url function getSelectedCloneUrl() { const reposOverview = JSON.parse(document.body.querySelectorAll('[partial-name="repos-overview"] [data-target="react-partial.embeddedData"][type="application/json"]')[0].textContent) ; return reposOverview?.props?.initialPayload?.overview?.codeButton?.local?.protocolInfo?.httpUrl ; } }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址