GitlabでマージするMerge RequestのタイトルとURLを列挙する
Usage
- Merge Requestの
Commits
タブを押下し、コミット一覧を表示 - Chromeの検証モードを表示し、Consoleタブで下記のScriptを実行
- 結果がプロントで表示されるのでコピペする。
script
var anchores=[];
document.querySelectorAll(".commit-row-description .gfm-merge_request").forEach(function(m) { anchores.push(m.href); });
console.log(anchores);
var result={};
function retrySearch() {
if(anchores.length > 0) {
searchTitle(anchores.pop());
return;
}
var message = `# マージMR\n`;
Object.keys(result).forEach(function (url) {
message += `* [${result[url]}](${url})\n`;
})
prompt('Description', message)();
}
function searchTitle(url) {
var url = url;
var request = new XMLHttpRequest();
request.open('GET', url);
request.onreadystatechange = function (){
// リクエスト中
if (request.readyState != 4) {
console.info("Requesting...");
return;
}
// 失敗
if (request.status != 200) {
console.error(request.responseText);
result[url] = null;
retrySearch();
return;
}
var htmlStr = request.responseText;
// console.log(htmlStr);
var html = $.parseHTML(htmlStr);
// console.log($(html).filter("title")[0].innerHTML);
console.log(url);
result[url] = $(html).filter("title")[0].innerHTML;
// HACK: 関連するissueを取れたらいいな
// console.log($(html).filter(".gfm-issue")[0].innerHTML);
retrySearch();
};
var formData = new FormData();
request.send(formData);
}
searchTitle(anchores.pop());
Result
https://git.example.com/path/to/project/-/merge_requests/002/commits
# マージMR
* [#000 Hoge (!000) · Merge Requests · path / to / project · GitLab](https://git.example.com/path/to/project/-/merge_requests/000)
* [#001 Hoge (!001) · Merge Requests · path / to / project · GitLab](https://git.example.com/path/to/project/-/merge_requests/001)