VOICEVOX / voicevox_project

VOICEVOX内のプロジェクトを管理するリポジトリ
15 stars 3 forks source link

プルリクエストマージ時のデフォルトコミットメッセージは何にするのが良いか #56

Open Hiroshiba opened 3 months ago

Hiroshiba commented 3 months ago

質問の内容

プルリクエストをマージする時、デフォルトでどういうメッセージにするかいくつか選べたりします。

image

でも結構いろんな条件でいろんな課題が発生するので、何にするべきか薄く意見を募集したいです。

課題

その他

完全に「自転車置き場の屋根の色」なんですが、何か考え出すと楽しいので考えちゃってます。 ご意見募集中です 🙏

Hiroshiba commented 3 months ago

個人的な意見としては、プルリクエストマージ時にそのプルリクエストの番号が書かれて、github上だとすぐにそのリンクへ飛べるのと、問題を考えるのがめんどくさいので、まあコミットメッセージはタイトルだけでいいかなと思い始めました。

ただ自分は1行目以外本当に全くコミットメッセージを見ないので、2行目以降のコミットメッセージを結構見る方がいらっしゃれば意見聞きたいです 🙏

qryxip commented 2 months ago

一応私はコミットメッセージを見る人の一人だと思います。

コミットメッセージの本文があることの利点の一つとして、git logを漫然と見ながら下方向(/)と上方向(?)に検索をかけれることがあると思います。git-log(1)以外でも、例えばNeovimのNeogitではlogを折り畳みつつ本文部分の検索ができたりします。もちろんキーボードから一時も指を離すことなく。このスタイルであれば10,000行のPR descriptionであってもさほどの影響は無いと思います。 (インスパイア元であるEmacsのMagitも同じことができる…と思ったのですがよく覚えていない)

image

<Neogit起動のキーバインド>ll/segfault<C-j>

image

C-mまたはReturn

image

あとPRのdescriptionをマージメッセージにしているっぽい有名リポジトリを調べてみました。マージ時にわざわざPRの「結論」をまとめ直してメッセージを書いているらしきところもそこそこ目にしました。 (ちなみにですが、有名リポジトリを片っ端から調べてみると"Create a merge commit"方式のリポジトリがかなり多かったです。"Squash and merge"に匹敵するどころがこちらの方がメジャーでは?と思えるほど)

PRのdescriptionをメッセージにしているっぽいもの

PRのdescriptionをベースにしつつ、たまに手書きしているっぽいもの

タイトルのみのもの

割愛。ただし結構あって、Pythonもそうなはず。


まあGitHubとの相性の悪いGit自体の機能はいくつもありますし、正直コミットメッセージもその一つだと思います。実際ここにいる多くの人はコミットメッセージを全く見ないとは思うので、判断は任せます。

Hiroshiba commented 2 months ago

気になって自分も調べてみました。 正直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 // リベースマージ?

qryxip commented 2 months ago

descriptionベースですが、コミットメッセージ本文はMarkdownとみなされないため```の中に'#'や'@'が入ってたりするとリンクされてしまうようです。microsoft/onnxruntimeでも結構発生しているみたい。 例: https://github.com/microsoft/onnxruntime/commit/3e934030f48bffc07c92e97a35b33cf2aad2d51f

この問題を避けるならマージ時に「PRの結論」を丁寧に書くのが多分ベストで、次点でタイトルのみ、という感じになるかなと…

Hiroshiba commented 2 months ago

なーーーーるほどです・・・ 😇

とりあえずタイトルのみにしようか迷ってます。思考回路こんな感じです。

「タイトルのみにする」か「skip ciされちゃっても良いから全コミットメッセージ含む」かだと、タイトルのみのが実害でなくてマシ・・・・・・・なのかなぁ・・・。

追記)あ! メンテナ次第では「手動でマージ時に書く」もあり!!!

qryxip commented 2 months ago

追記)あ! メンテナ次第では「手動でマージ時に書く」もあり!!!

コミットメッセージ本文は基本空白になるけど、マージボタンを押す人がなんか書いたりするのは止めない、という感じでしょうか?

Hiroshiba commented 2 months ago

あっすみません! メンテナ側で「コメントを書いてからマージするようにする」と取り決めを決めておけば、運用でカバーできるという意図でした!

コアの主体なメンテナは @qryxip さんという認識(と @Hiroshiba と @y-chan もだけど)なので、例えばですがコアは毎回 @qryxip さんがコメントを書いてもマージボタンを押す、ということにするとか。 で、自分とかは緊急時にしかマージしない(&タイトルのみマージ)みたいな。 (もしやるなら、今の運用だとレビュワーの方も2つapproveが集まればマージできる形になっているので、そこをどうするかも考慮ポイントかも。とりあえずそのまま運用でもほとんど問題なさそう。)

qryxip commented 2 months ago

なるほどです。ちょっと試しに、 VOICEVOX/voicevox_core#831 のマージで「PRの結論」を書いてみました。

image

Hiroshiba commented 2 months ago

おー!!! 見ていて思ったのですが、結論はわりとプルリクエストを作った段階ではなく、マージされる段階で完成されるので、プルリクエストを作った方にdescriptionに書いていただいてもダメかもですね。 (自動化しづらいということ)

全然関係ないけど、変更内容とディスカッションからこれくらい的を射た要約を作れるLLMが現れるととてもうれしそう。まだまだ先だろうけど。

qryxip commented 1 month ago

第二弾。自分の中での整理になりますし結構いいですねこれ。 image

Hiroshiba commented 1 month ago

おお、なるほどです!! ではとりあえずVOICEVOX COREだけ、一旦様子見としてデフォルトコミットメッセージをタイトルのみにしてみますか! 他のリポジトリは一旦そのまま・・・?で良いかなぁ。

2024/09/19 23:57追記 VOICEVOX COREをtitleのみにしてみました! また何かあれば何でもコメントいただければ!!

qryxip commented 1 month ago

ヒホさんが作った VOICEVOX/voicevox_core#840 についても「結論」のメッセージを書いてみました(中身はヒホさんが書いたdescriptionほぼそのままです)。

ただまあ、Git的にはauthorとcommitterという概念があるのですが、GitHub的にはcommitterという概念は無いのでヒホさんがこのテキストを打ち込んだように見える…

image

Hiroshiba commented 1 month ago

ただまあ、Git的にはauthorとcommitterという概念があるのですが、GitHub的にはcommitterという概念は無いのでヒホさんがこのテキストを打ち込んだように見える…

あ、たしかに!! 最初に「(メンテナによる要約)」とか書けば問題ないかも? あるいは貢献者ガイドライン等に「メンテナによる要約をコミットメッセージとする運用をしています」と書いておくとかでも良さそう。

まあ何も書かずにもうしばらく運用してみるのでも良さそう!

Hiroshiba commented 3 weeks ago

(報告だけ)

エディタの方も、プルリグタイトルだけが入るようにしておきました!

スナップショットを更新するためのコミットメッセージがあるんですが、もしかしたらそれが反応してそうだったので、ついでにエディタ側もタイトルのみにしちゃおうかなと!