Skip to content

コミットメッセージが空・空白のみの git commit を禁止する #39

Description

@yozure420

概要

コミットメッセージが空、または空白のみgit commit -m を禁止し、専用のエラーメッセージで拒否する。

実際の git も空メッセージのコミットは Aborting commit due to empty commit message. で中断される(-m " " のような空白のみも cleanup で空扱いになり中断)ため、拒否することで実 git との整合性が取れる。

背景

当初の設計ではコミットメッセージの中身は自由テキスト(何でもOK)だったが、現在はコミット c592e67 以降、注文のコール文言との完全一致が要求される(#36 の同根問題)。今後メッセージを自由テキストに戻す際、バリデーションがないと空・空白のみのメッセージが通ってしまうため、先に仕様として明確化しておく。

現状の挙動(実ロジックで検証済み)

commit の番で入力した場合:

入力 現在の挙動
git commit -m "台湾ラーメンナルト入りおまち!"(注文どおり) ✅ 成功
git commit -m "" 正規表現 "(.+)" にマッチせず汎用フォールバックに落ち、「❌ 今は「git commit -m "..."」の番です」という文脈のずれたメッセージになる
git commit -m " "(半角スペースのみ) 完全一致チェックで拒否(空白起因であることは伝わらない)
git commit -m " "(全角スペースのみ) 同上
git commit -m "うまいラーメン"(自由テキスト) 完全一致チェックで拒否(※自由化するかは別途判断)

仕様

  1. メッセージがgit commit -m "")の場合、コミットを実行せずエラーメッセージを表示する
  2. メッセージが空白のみ(半角スペース・全角スペース・タブ等だけで構成される)の場合も同様に拒否する
  3. メッセージ例: ❌ コミットメッセージが空です(実 git の "Aborting commit due to empty commit message." に相当)
  4. isCommitted は変化させず、ステップも進めない

実装メモ

  • 現在の正規表現 /^git commit -m "(.+)"$/i-m "" にマッチしない(.+ が1文字以上要求)ため、空文字の入力は汎用フォールバックに落ちてしまう。"(.*)" でキャプチャして中身を trim()(全角スペース含む)で判定し、空なら専用エラーを出す形にする
  • コミットメッセージを自由テキストに戻す場合(当初設計)は、この空チェックが唯一のバリデーションになる

受け入れ条件

  • git commit -m "" が「コミットメッセージが空」である旨のエラーで拒否される
  • git commit -m " "(半角のみ)・git commit -m " "(全角のみ)が同じエラーで拒否される
  • 拒否時に isCommitted は false のまま、ステップも進行しない
  • 中身のあるメッセージのコミットは従来どおり成功する

検討事項

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions