Git コミットメッセージ: 50/72 フォーマット [closed] 質問する

Git コミットメッセージ: 50/72 フォーマット [closed] 質問する

Tim Pope 氏はブログ記事の中で、特定の Git コミット メッセージのスタイルを主張しています。http://www.tpope.net/node/106

彼の推奨事項を簡単にまとめると次のようになります。

  • 最初の行は50文字以下です。
  • 次に空白行。
  • 残りのテキストは 72 文字で折り返されます。

彼のブログ投稿では、これらの推奨事項(簡潔にするために「50/72 フォーマット」と呼ぶ)の根拠が説明されています。

  • 実際には、一部のツールでは、最初の行を件名として扱い、2 番目の段落を本文として扱います (電子メールと同様)。
  • git log折り返しを処理しないので、行が長すぎると読みにくくなります。
  • git format-patch --stdoutコミットを電子メールに変換します。そのため、コミットがすでに適切にラップされている場合は、うまく動作するのに役立ちます。

私が付け加えたい点は、ティムも同意するだろうと思う点です。

  • コミットを要約する行為は、どのバージョン管理システムでも本質的に良い習慣です。これにより、他の人 (または後から参加するあなた) が関連するコミットをより迅速に見つけられるようになります。

私の質問にはいくつかの角度があります。

  • Git の「思想的リーダー」や「経験豊富なユーザー」のうち、50/72 フォーマット スタイルを採用しているのは (だいたい) どのくらいの割合でしょうか。この質問をする理由は、新しいユーザーはコミュニティの慣習を知らないか、気にしないことがあるからです。
  • このフォーマットを使用しない場合、異なるフォーマット スタイルを使用する原則的な理由はありますか? (私が求めているのは、「聞いたことがない」や「気にしない」ではなく、メリットに関する議論であることに注意してください)。
  • 経験的に言えば、このスタイルを採用している Git リポジトリの割合はどのくらいでしょうか? (誰かが GitHub リポジトリの分析をしたい場合に備えて... ヒント、ヒント。)

ここで私が言いたいのは、50/72 スタイルを推奨したり、他のスタイルを否定したりすることではありません。(率直に言うと、私はこのスタイルを好みますが、他のアイデアも受け入れます。) 人々がさまざまな Git コミット メッセージのスタイルを好んだり、反対したりする理由を知りたいだけです。(言及されていない点についても、遠慮なく取り上げてください。)

ベストアンサー1

「要約」行(数式中の50)に関しては、Linuxカーネルのドキュメントこう言う:

For these reasons, the "summary" must be no more than 70-75
characters, and it must describe both what the patch changes, as well
as why the patch might be necessary.  It is challenging to be both
succinct and descriptive, but that is what a well-written summary
should do.

そうは言っても、カーネルのメンテナーは確かに 50 前後に抑えようとしているようです。以下は、カーネルの git ログの概要行の長さのヒストグラムです。

Git サマリー行の長さフルサイズで表示

興味深い部分が 1 行のように見えないように、このグラフに収まるよりも長い (中にははるかに長いものもある) 概要行を持つコミットがいくつか存在します。 (おそらく、そのデータをここに組み込むための高度な統計手法があるのでしょうが、まあ、仕方ありません... :-)

生の長さを確認したい場合は、次の手順に従ってください。

cd /path/to/repo
git shortlog  | grep -e '^      ' | sed 's/[[:space:]]\+\(.*\)$/\1/' | awk '{print length($0)}'

またはテキストベースのヒストグラム:

cd /path/to/repo
git shortlog  | grep -e '^      ' | sed 's/[[:space:]]\+\(.*\)$/\1/' | awk '{lens[length($0)]++;} END {for (len in lens) print len, lens[len] }' | sort -n

おすすめ記事