Post

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)
This post is licensed under CC BY 4.0 by the author.