Skip to content

ブランチ名を自由に設定できるようにする(空白を含む名前は拒否) #38

Description

@yozure420

概要

ブランチ(レーン)名をプレイヤーが自由に設定できるようにしたい。ただし空白を含む名前は拒否する。

背景

現状はブランチ名を自由に決められない:

  • ブランチ作成が成功するのは来客イベント注文(git branch akamaru-42 のようにゲームが生成した名前を要求される)のときだけで、プレイヤーが任意の名前で git branch <name> / git checkout -b <name> を打っても厳密一致チェックで拒否される(根本原因は branch/switch/checkout が実gitと乖離:切替系が常に失敗し lane2/3 宛の注文が配達不可能 #37 / コミット c592e67
  • 名前の候補もゲーム内部の LANE_NAME_OPTIONS(akamaru / kiwami / sapporo / iekei + 数字)に固定されている(frontend/src/game/commandLogic.ts

また、名前のバリデーションが存在しない:

  • git branch (.+)$ / git checkout -b (.+)$ の正規表現は空白ごとキャプチャするため、自由作成が解禁されると git branch my cool lane が「my cool lane」という1ブランチとして通ってしまう
  • 実際の git ではブランチ名に空白は使えない(git branch my cool lane は too many arguments エラー)ので、学習ゲームとして空白入り名を受け付けるのは実 git との乖離になる

仕様

  1. 自由なブランチ名で作成できる
  2. 空白を含む名前は拒否する
    • 半角スペース・全角スペースを含む名前(例: git branch my lanegit branch ラー メン)はレーンを作成せず、エラーメッセージを表示する
    • メッセージ例: ❌ ブランチ名に空白は使えません
    • 実 git でも空白入りブランチ名は作成できないため、拒否することで整合性が取れる
    • git switch -c <name> を対応させる場合(branch/switch/checkout が実gitと乖離:切替系が常に失敗し lane2/3 宛の注文が配達不可能 #37 の修正案参照)も同じバリデーションを適用する

受け入れ条件

  • 注文がない状態でも git branch mybranch でレーンが増える(切替はしない=実 git と同じ)
  • git checkout -b mybranch でレーンが増え、そのレーンに切り替わる
  • git branch my lane(半角空白)・git branch ラー メン(全角空白)が拒否され、エラーメッセージが表示される
  • 既存名・最大レーン数超過は従来どおり拒否される
  • 来客イベント注文で指定名を入力するとステップが完了する

検討事項

関連

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