// ==UserScript== // @name GitHub Disable Merge When Fixup! Commits Exist // @namespace http://tampermonkey.net/ // @version 0.1.2 // @description Disable the merge pull request button when fixup! commits exist in the current PR and haven't been squashed yet // @author Drew Budwin // @match http*://github.com/* // @require https://code.jquery.com/jquery-2.2.1.js // @require https://greasyfork.org/scripts/6250-waitforkeyelements/code/waitForKeyElements.js?version=23756 // @grant none // @downloadURL none // ==/UserScript== waitForKeyElements (".merge-message", disableMergeButton); function disableMergeButton() { var mergeButtonText = "Merge pull request"; var mergeButton = findButtonByClass(mergeButtonText); if (mergeButton !== null && doesPRContainFixupCommits()) { mergeButton.innerHTML = "Are there fixup! commits?"; mergeButton.disabled = true; } else { console.log("ERROR: Can't locate active merge button on page with text \"" + mergeButtonText + "\"!"); } } function findButtonByClass(textToLookFor) { var buttons = document.getElementsByClassName('btn btn-primary js-merge-branch-action'); if (buttons.length == 1) { return buttons[0]; } return null; } function doesPRContainFixupCommits() { var position = document.documentElement.innerHTML.indexOf('fixup!'); return position !== -1 ? true : false; }