GitHub: Blame Previous Commit Button

Add a button to `git blame` the `sha^` (parent commit) on each commit on a `git blame` page.

Verze ze dne 08. 06. 2016. Zobrazit nejnovější verzi.

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name            GitHub: Blame Previous Commit Button
// @description     Add a button to `git blame` the `sha^` (parent commit) on each commit on a `git blame` page.
// @author          Chris H (Zren / Shade)
// @icon            https://github.com/favicon.ico
// @namespace       http://xshade.ca
// @version         2
// @include         https://github.com*
// ==/UserScript==

// Works with GitHub Enterprise as well, just add your own @include rule for your domain.

(function(uw){
    var $ = uw.$;

    var createElement = function(html) {
        var e = document.createElement('div');
        e.innerHTML = html;
        return e.firstChild;
    };

    var blameUrlPattern = /^(\/[^\/]+\/[^\/]+\/blame\/)([^\/]+)(.*)$/;

    var main = function() {
        var m = blameUrlPattern.exec(document.location.pathname);
        if (!m)
            return;

        Array.prototype.forEach.call(document.querySelectorAll('.blame-commit-info'), function(e) {
            var url = e.firstElementChild.href;
            var sha = url.substr(url.lastIndexOf('/') + 1);
            var blameUrlForCurrentFile = m[1] + sha + encodeURI('^') + m[3];
            var html = '<a class="blame-sha blame-previous-commit" href="' + blameUrlForCurrentFile + '">Before</a>';
            var a = createElement(html);
            e.lastElementChild.insertBefore(a, e.lastElementChild.firstChild);
        });
    };

    main();
    $(document).on('pjax:end', main);

})(typeof unsafeWindow === 'undefined' ? window : unsafeWindow);