Open Hiroshiba opened 3 months ago
個人的な意見としては、プルリクエストマージ時にそのプルリクエストの番号が書かれて、github上だとすぐにそのリンクへ飛べるのと、問題を考えるのがめんどくさいので、まあコミットメッセージはタイトルだけでいいかなと思い始めました。
ただ自分は1行目以外本当に全くコミットメッセージを見ないので、2行目以降のコミットメッセージを結構見る方がいらっしゃれば意見聞きたいです 🙏
一応私はコミットメッセージを見る人の一人だと思います。
コミットメッセージの本文があることの利点の一つとして、git log
を漫然と見ながら下方向(/)と上方向(?)に検索をかけれることがあると思います。git-log(1)
以外でも、例えばNeovimのNeogitではlogを折り畳みつつ本文部分の検索ができたりします。もちろんキーボードから一時も指を離すことなく。このスタイルであれば10,000行のPR descriptionであってもさほどの影響は無いと思います。
(インスパイア元であるEmacsのMagitも同じことができる…と思ったのですがよく覚えていない)
↓ <Neogit起動のキーバインド>ll/segfault<C-j>
↓ C-mまたはReturn
あとPRのdescriptionをマージメッセージにしているっぽい有名リポジトリを調べてみました。マージ時にわざわざPRの「結論」をまとめ直してメッセージを書いているらしきところもそこそこ目にしました。 (ちなみにですが、有名リポジトリを片っ端から調べてみると"Create a merge commit"方式のリポジトリがかなり多かったです。"Squash and merge"に匹敵するどころがこちらの方がメジャーでは?と思えるほど)
<!-- -->
なども全部入っている)割愛。ただし結構あって、Pythonもそうなはず。
まあGitHubとの相性の悪いGit自体の機能はいくつもありますし、正直コミットメッセージもその一つだと思います。実際ここにいる多くの人はコミットメッセージを全く見ないとは思うので、判断は任せます。
気になって自分も調べてみました。 正直descriptionでも良さそうに思いました! もし定型文がある場合はメッセージを短くしたほうが良さそう。(今のとこほぼないので問題ない)
タイトルのみ https://github.com/vuejs/core https://github.com/microsoft/TypeScript https://github.com/electron/electron // 各commitメッセージを束ねたのをメッセージにしてることもある
descriptionベース https://github.com/elastic/elasticsearch https://github.com/redis/redis https://github.com/flutter/flutter // チェックリストとかは除外
merge commitベース(ここより上は全部squash merge) https://github.com/kubernetes/kubernetes
その他 https://github.com/apache/kafka // JIRAチケットあるものはマージメッセージがない https://github.com/django/django // ? https://github.com/openssl/openssl // リベースマージ?
descriptionベースですが、コミットメッセージ本文はMarkdownとみなされないため```
の中に'#'や'@'が入ってたりするとリンクされてしまうようです。microsoft/onnxruntimeでも結構発生しているみたい。
例: https://github.com/microsoft/onnxruntime/commit/3e934030f48bffc07c92e97a35b33cf2aad2d51f
この問題を避けるならマージ時に「PRの結論」を丁寧に書くのが多分ベストで、次点でタイトルのみ、という感じになるかなと…
なーーーーるほどです・・・ 😇
とりあえずタイトルのみにしようか迷ってます。思考回路こんな感じです。
「タイトルのみにする」か「skip ciされちゃっても良いから全コミットメッセージ含む」かだと、タイトルのみのが実害でなくてマシ・・・・・・・なのかなぁ・・・。
追記)あ! メンテナ次第では「手動でマージ時に書く」もあり!!!
追記)あ! メンテナ次第では「手動でマージ時に書く」もあり!!!
コミットメッセージ本文は基本空白になるけど、マージボタンを押す人がなんか書いたりするのは止めない、という感じでしょうか?
あっすみません! メンテナ側で「コメントを書いてからマージするようにする」と取り決めを決めておけば、運用でカバーできるという意図でした!
コアの主体なメンテナは @qryxip さんという認識(と @Hiroshiba と @y-chan もだけど)なので、例えばですがコアは毎回 @qryxip さんがコメントを書いてもマージボタンを押す、ということにするとか。 で、自分とかは緊急時にしかマージしない(&タイトルのみマージ)みたいな。 (もしやるなら、今の運用だとレビュワーの方も2つapproveが集まればマージできる形になっているので、そこをどうするかも考慮ポイントかも。とりあえずそのまま運用でもほとんど問題なさそう。)
なるほどです。ちょっと試しに、 VOICEVOX/voicevox_core#831 のマージで「PRの結論」を書いてみました。
おー!!! 見ていて思ったのですが、結論はわりとプルリクエストを作った段階ではなく、マージされる段階で完成されるので、プルリクエストを作った方にdescriptionに書いていただいてもダメかもですね。 (自動化しづらいということ)
全然関係ないけど、変更内容とディスカッションからこれくらい的を射た要約を作れるLLMが現れるととてもうれしそう。まだまだ先だろうけど。
第二弾。自分の中での整理になりますし結構いいですねこれ。
おお、なるほどです!! ではとりあえずVOICEVOX COREだけ、一旦様子見としてデフォルトコミットメッセージをタイトルのみにしてみますか! 他のリポジトリは一旦そのまま・・・?で良いかなぁ。
2024/09/19 23:57追記 VOICEVOX COREをtitleのみにしてみました! また何かあれば何でもコメントいただければ!!
ヒホさんが作った VOICEVOX/voicevox_core#840 についても「結論」のメッセージを書いてみました(中身はヒホさんが書いたdescriptionほぼそのままです)。
ただまあ、Git的にはauthorとcommitterという概念があるのですが、GitHub的にはcommitterという概念は無いのでヒホさんがこのテキストを打ち込んだように見える…
ただまあ、Git的にはauthorとcommitterという概念があるのですが、GitHub的にはcommitterという概念は無いのでヒホさんがこのテキストを打ち込んだように見える…
あ、たしかに!! 最初に「(メンテナによる要約)」とか書けば問題ないかも? あるいは貢献者ガイドライン等に「メンテナによる要約をコミットメッセージとする運用をしています」と書いておくとかでも良さそう。
まあ何も書かずにもうしばらく運用してみるのでも良さそう!
(報告だけ)
エディタの方も、プルリグタイトルだけが入るようにしておきました!
スナップショットを更新するためのコミットメッセージがあるんですが、もしかしたらそれが反応してそうだったので、ついでにエディタ側もタイトルのみにしちゃおうかなと!
質問の内容
プルリクエストをマージする時、デフォルトでどういうメッセージにするかいくつか選べたりします。
でも結構いろんな条件でいろんな課題が発生するので、何にするべきか薄く意見を募集したいです。
課題
[skip ci]
と書かれたメッセージをマージした時に、mainブランチのCIをスキップされてしまう<detail>
などがあってものすごく長くなってる場合にメッセージがとんでもない量になるhttp://github.com/hoge/fuga/issues/#123
みたいなコメントが入ってるコードがあると、そこへのリンクが張られてしまうかも(要検証)その他
完全に「自転車置き場の屋根の色」なんですが、何か考え出すと楽しいので考えちゃってます。 ご意見募集中です 🙏