概要
bit が並列フック実行をサポートするための feature request。upstream git 2.55 で正式に追加された機能 (hook.parallel 系 config) のキャッチアップ。
新ファイル src/cmd/bit/hook_runner.mbt:
read_hook_config(rfs, git_dir, hook_name) — parse_config_blocks で [hook "<name>"] セクションを走査して、command (multi-value) と parallel を取り出す
is_truthy_config_value — git の true|yes|on|1 を真として扱う
run_hook_command(command, cwd) — @process.run の薄いラッパー (command は literal path)
run_hook(rfs, root, git_dir, hook_name, cwd) — エントリポイント
- config に
command が無ければ legacy <hooks_dir>/<name> を実行 (後方互換)
- sequential (default): 最初の non-zero exit を返す
- parallel:
@async.with_task_group で各 command を spawn、全終了後に worst exit を返す
設定例
[hook "pre-commit"]
command = /usr/bin/formatter
command = /usr/bin/linter
parallel = true
移行済み呼び出し箇所
cmd/bit/commit.mbt::run_pre_commit_hook
cmd/bit/clone.mbt::run_postclone_hook
cmd/bit/add.mbt::run_add_hook
未移行
引数を渡すパスはまだ legacy のまま (run_hook は今のところ no-args)。将来 args~ : Array[String] parameter を追加して以下を順次移行:
pull.mbt::run_push_hook (pre-push / post-receive)
hub_sync.mbt::hub-notify
hub_github_sync.mbt::post-push
テスト
hooks_wbtest.mbt に 5 件追加、全 16 件 pass:
read_hook_config returns empty for missing section
read_hook_config parses multi-command + parallel flag
read_hook_config treats parallel=false as default
is_truthy_config_value matches git's accepted forms
read_hook_config skips other hook sections
moon check: 0 warnings, 0 errors.
closing as completed for the basic implementation (no-args hooks).
概要
bitが並列フック実行をサポートするための feature request。upstream git 2.55 で正式に追加された機能 (hook.parallel系 config) のキャッチアップ。実装 (commit 1bdee67)
新ファイル
src/cmd/bit/hook_runner.mbt:read_hook_config(rfs, git_dir, hook_name)—parse_config_blocksで[hook "<name>"]セクションを走査して、command(multi-value) とparallelを取り出すis_truthy_config_value— git のtrue|yes|on|1を真として扱うrun_hook_command(command, cwd)—@process.runの薄いラッパー (command は literal path)run_hook(rfs, root, git_dir, hook_name, cwd)— エントリポイントcommandが無ければ legacy<hooks_dir>/<name>を実行 (後方互換)@async.with_task_groupで各 command を spawn、全終了後に worst exit を返す設定例
移行済み呼び出し箇所
cmd/bit/commit.mbt::run_pre_commit_hookcmd/bit/clone.mbt::run_postclone_hookcmd/bit/add.mbt::run_add_hook未移行
引数を渡すパスはまだ legacy のまま (
run_hookは今のところ no-args)。将来args~ : Array[String]parameter を追加して以下を順次移行:pull.mbt::run_push_hook(pre-push / post-receive)hub_sync.mbt::hub-notifyhub_github_sync.mbt::post-pushテスト
hooks_wbtest.mbtに 5 件追加、全 16 件 pass:read_hook_config returns empty for missing sectionread_hook_config parses multi-command + parallel flagread_hook_config treats parallel=false as defaultis_truthy_config_value matches git's accepted formsread_hook_config skips other hook sectionsmoon check: 0 warnings, 0 errors.closing as completed for the basic implementation (no-args hooks).