您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Compare commits like pull requests
- // ==UserScript==
- // @name Azure DevOps Commit Compare
- // @namespace https://fxzfun.com/userscripts
- // @version 1.0.0
- // @description Compare commits like pull requests
- // @author FXZFun
- // @match https://dev.azure.com/*/*/_git/*/commit/*
- // @match https://dev.azure.com/*/*/_git/*
- // @icon https://cdn.vsassets.io/content/icons/favicon.ico
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- function run() {
- if (document.getElementById("__bolt-compare-commits")) return;
- const commitId = location.href.match(/(?<=commit\/)(.+)(?=\?)/gi)?.[0];
- const storedCommitId = localStorage.getItem("azureDevOpsCommitCompareId");
- document.getElementById("__bolt-browse-files").insertAdjacentHTML("beforeBegin",
- `<a aria-roledescription="link"
- class="bolt-header-command-item-button bolt-button bolt-link-button enabled ${storedCommitId && "primary"} bolt-focus-treatment"
- data-focuszone="focuszone-3"
- data-is-focusable="true"
- id="__bolt-compare-commits"
- role="menuitem"
- tabindex="0">
- <span class="bolt-button-text body-m">${storedCommitId ? "Start Compare" : "Compare Commits"}</span>
- </a>`);
- document.getElementById("__bolt-compare-commits").addEventListener("click", () => {
- let url = location.href.substring(0, location.href.indexOf('commit'));
- if (!storedCommitId) {
- localStorage.setItem("azureDevOpsCommitCompareId", commitId);
- url += "commits";
- } else {
- localStorage.removeItem("azureDevOpsCommitCompareId");
- url += `/branchCompare?baseVersion=GC${storedCommitId}&targetVersion=GC${commitId}&_a=files`;
- }
- location.href = url;
- });
- }
- let currentURL = "";
- setInterval(() => {
- if (location.href !== currentURL && /https:\/\/dev\.azure\.com\/.*\/.*\/_git\/.*\/commit\/.*/.test(location.href)) {
- run()
- currentURL = location.href;
- }
- }, 1000); // Check every second
- })();