Skip to content

タスク単位で base_branch を指定できるようにする #399

@nrslib

Description

@nrslib

概要

インタラクティブモードおよび tasks.yaml でタスクごとに base_branch を指定できるようにする。main 以外のブランチ上で会話してタスクを積んだ場合、そのブランチをベースにして作業ブランチを切れるようにする。

背景

現在、ベースブランチは config.yaml のグローバル設定(base_branch)か detectDefaultBranch(main/master)で決まる。タスク単位での指定はできない。

feat/xxx ブランチ上でインタラクティブに会話してタスクを積んでも、実行時は main からブランチが切られるため、会話の文脈と実行環境がずれる。

仕様

tasks.yaml に base_branch フィールドを追加

- task: "..."
  slug: "fix-something"
  base_branch: "feat/xxx"    # 新規フィールド
  branch: "takt/398/fix-something"

ベースブランチの解決順序

  1. タスクに base_branch 指定あり → ローカル/リモート(origin/<branch>)を探す → どちらにもなければエラー
  2. タスクに base_branch 指定なし → config.yaml の base_branchdetectDefaultBranch(今まで通り)

インタラクティブモード(promptWorktreeSettings)

プロンプト順序を変更し、Base branch を常に聞く:

1. Worktree path (Enter for auto)
2. Base branch (Enter for default [main]):    ← 新規追加
3. Branch name (Enter for auto)
4. Auto-create PR?
5. Create as draft?
  • Enter(未指定)→ config.yaml に従う(従来通り)
  • ブランチ名を入力 → ローカル/リモートを探す
  • 見つからない → 「Branch 'feat/xxx' not found (local or remote)」エラーを表示して再入力を促す

モード別のエラー挙動

モード base_branch が見つからない場合
インタラクティブ(takt / takt add エラー表示 → 再入力を促す
パイプライン(takt run / --pipeline エラーで停止

関連

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