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)