サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

Redmineのチケットの内容をコミットメッセージにするブックマークレット【Bookmarklet】

はじめに

 VCS のコミットが、Redmine のチケット単位になることはしばしばあります。コミットメッセージに書く内容も、同じような感じになるかもしれません。

 だったら、Redmine の内容から自動でコミットメッセージに変換してくれればいい。

 ブックマークレットを作成します。

仕様

  • プレフィックスは、「トラッカー」から判定します。
  • 1行目は、「題名」から取得します。
  • 3行目は、チケット番号とします。
  • 4行目以降は、チケットの「説明」とします。

ブックマークレット

  • Redmineのチケットの内容をコミットメッセージにする
javascript:(function()%7Bvar%20gid%3Dfunction(id)%7Breturn%20document.getElementById(id)%3B%7D%3Blet%20obj%3Dgid('issue_tracker_id')%3Bconst%20tracker%3Dobj.options%5Bobj.selectedIndex%5D.text%3Bconst%20title%3Dgid(%22issue_subject%22).value%3Bconst%20description%3Dgid(%22issue_description%22).value%3Bconst%20ticketNum%3Dlocation.pathname.match(%2F%5Cd%2B%24%2Fg)%5B0%5D%3Blet%20prefix%3D%22%22%3Bif(tracker%3D%3D%3D%22バグ%22)%7Bprefix%3D%22bug%3A%20%22%3B%7Dif(tracker%3D%3D%3D%22改善%22)%7Bprefix%3D%22feat%3A%20%22%3B%7Dlet%20msg%3Dprefix%20%2B%20title%20%2B%20%22%5Cn%5Cn%23%22%20%2B%20ticketNum%20%2B%20%22%5Cn%22%20%2B%20description%3Bnavigator.clipboard.writeText(msg)%3B%7D)()%3Bvoid(0);

ソースコード

 真ん中あたりにあるトラッカーをプレフィックスに変換するところは、所属のチームによって異なると思いますので、適宜調整してください。

 ブックマークレットへの変換は、以下のサービスを使用しました。

(function () {
    var gid = function (id) { return document.getElementById(id); };
    let obj = gid('issue_tracker_id');
    const tracker = obj.options[obj.selectedIndex].text;
    const title = gid("issue_subject").value;
    const description = gid("issue_description").value;
    const ticketNum = location.pathname.match(/\d+$/g)[0];

    let prefix = "";
    if (tracker === "バグ") { prefix = "bug: "; }
    if (tracker === "改善") { prefix = "feat: "; }

    let msg = prefix + title + "\n\n#" + ticketNum + "\n" + description;

    navigator.clipboard.writeText(msg);
})();

動作確認環境

その他(テンプレ)

 ブックマークレットとは何かをご存知ない方は、以下のページを参考にしてみてください。