Github上でgit blameを繰り返し行うのをChromeのユーザースクリプトで楽にする

あるコードを追加したコミットを見たいときに、改行コードの変更が全体を覆っているとかで、blame一回で確認できない場合があります。

そういったときは、

1.Blameでコミットを見て、
2.historyを開いて、1のコミットの1つ前の「<>」(マウスオーバーするとBrowse the repository at this point in the history)と出るボタンを押して、
3.さらにBlameのボタンを押して、コミットを見て…

とやりますが、面倒なのでChromeのユーザースクリプトを作ってみました。


1.manifest.jsonを作成

{
     "manifest_version":2,
     "version":"1.0",
     "name": "BlameExtension",
     "content_scripts": [
         {
             "js": ["myscript.js"],
             "matches": ["https://github.com/*/blame/*"]
         }
     ]
}

2.myscript.jsを作成

for(target of document.getElementsByClassName("blame-commit-title")){

var arr=target.childNodes[0].href.split("/");
var sha=arr[arr.length-1];

var a = document.createElement("A");
var url = location.href.replace(/blame\/[A-Za-z0-9]+/,"blame/"+sha+"^");
a.setAttribute('href', url);
var btn = document.createElement("BUTTON");
var t = document.createTextNode("B");
a.appendChild(btn);
btn.appendChild(t);

target.appendChild(a);

}

DOMからコミットのSHAを抜き出して、今開いているページのURL(location.href)のSHAまたはmaster(/を含むブランチ名にはまだ非対応)を書き換えてリンクを作ってます。


3.manifest.jsonとmyscript.jsをフォルダに入れて、フォルダをchrome://extensions/へドラッグ&ドロップすると動きます。