
2026/03/29 5:32
**Show HN:Git Bayesect — 非決定的バグのためのベイズ型 Git バイセクション**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Git_bayesect は、Git の二分探索にベイズ推論を適用するコマンドラインユーティリティであり、開発者がフラッキーなテストやその他のイベント失敗の確率を変化させるコミットを隔離できるようにします。
ツールは各コミットを仮説として扱い、未知の失敗率を処理するためにベータ-ベルヌーイモデルと期待エントロピー(ベータ-ベルヌーイ共役)の貪欲最小化を使用します。
インストール:
uv tool install git_bayesect (または pip で)。二分探索の開始:
git bayesect start --old $COMMIT [--new $COMMIT].観測の記録: 成功の場合は
git bayesect pass、失敗の場合は git bayesect fail/record failure。 pass コマンドは特定のコミットハッシュとともに実行することもできます(git bayesect pass --commit $COMMIT)。ステータスと制御:
git bayesect status, git bayesect reset, git bayesect undo.事前分布の設定: コミットごとの事前分布は
git bayesect prior --commit $COMMIT --weight 10、大量の事前分布は priors_from_filenames や priors_from_text のようなコールバックで設定します。自動化とログ: 観測収集を自動化するには
git bayesect run <command> を使用し、コマンドログを見るには git bayesect log.最終化: 最も確率の高い原因コミットにチェックアウトするには
git bayesect checkout.
デモリポジトリ(
fake_repo)は合成履歴を生成し、フラッキーなスクリプトを実行し、ベイズ二分探索を適用して失敗確率を変化させたコミットを特定する方法を示します。
これらのコマンドを QA ワークフローに統合することで、開発者は問題のあるコミットをより迅速に特定し、リリースの信頼性を向上できます。
本文
Git Bayesect – ベイズ的 Git バイセクション
概要
git-bayesect はベイズ推論を用いて、テストのフラッキー化やその他観測可能な振る舞いの変化をもたらしたコミットを特定します。期待エントロピーを貪欲に最小化し、Beta‑Bernoulli の共役性を利用して後方分布を計算します。
詳細は以下をご覧ください: https://hauntsaninja.github.io/git_bayesect.html
インストール
# pip でインストール pip install git-bayesect # uv を使う場合 uv tool install git_bayesect
基本的な使い方
| コマンド | 説明 |
|---|---|
| 指定した古いコミットからベイズバイセクションを開始します。 |
| 与えられたコミット(省略時は現在の HEAD)で成功観測を記録します。 |
| 与えられたコミットで失敗観測を記録します。 |
| バイセクション全体の進捗と後方推定値を表示します。 |
| 現在のバイセクションセッションをリセットします。 |
高度な機能
事前分布の設定
-
コミット単位の事前
git bayesect prior --commit <COMMIT> --weight 10 -
ファイル名から一括で設定
git bayesect priors_from_filenames \ --filenames-callback "return 10 if any('suspicious' in f for f in filenames) else 1" -
コミットメッセージ+diff から一括で設定
git bayesect priors_from_text \ --text-callback "return 10 if 'timeout' in text.lower() else 1"
ログと取り消し
– セッション中に実行された全コマンドの再現可能なログを出力します。git bayesect log
– 最後の観測結果を元に戻します。git bayesect undo
自動観測
git bayesect run <command>
各候補コミットで
<command> を実行し、パス/フェイルを自動で記録して後方分布を更新します。
デモワークフロー
-
疑似リポジトリを作成
python scripts/generate_fake_repo.py cd fake_repo -
フラッキーなテストスクリプトを実行
python flaky.py git log --oneline -
バイセクション開始
OLD_COMMIT=$(git rev-list HEAD --reverse | head -n 2 | tail -n 1) git bayesect start --new main --old $OLD_COMMIT -
自動観測で変更点を探す
git bayesect run python flaky.py -
進捗確認と最良コミットへチェックアウト
git bayesect status git bayesect checkout-best
ハッピー・ハンティング!