## 概要
[[Lazygit]]で[[git bisect]]を試してみた。
## 対象リポジトリ
<div class="link-card">
<div class="link-card-header">
<img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/>
<span class="link-card-site-name">GitHub</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">GitHub - tadashi-aikawa/ghostwriter.nvim: A Neovim plugin to share Markdown task lists as Slack posts.</p>
<p class="link-card-description">A Neovim plugin to share Markdown task lists a ... </p>
</div>
<img src="https://repository-images.githubusercontent.com/835714070/376aa551-35b7-46e6-b8b8-ba72fb208d9b" class="link-card-image" />
</div>
<a href="https://github.com/tadashi-aikawa/ghostwriter.nvim"></a>
</div>
## 目的
`vusted lua` が動くようになったタイミングを見極める。そのため
- `bad` `vusted lua` が **動く**
- `good` `vusted lua` が **動かない**
とする。
## 開始と終了を定める
今回はすべてのコミットを対象期間とするので、最新と最初のコミットに移動してそれぞれ設定する。
![[Pasted image 20241215194518.png|frame]]
*HEADで `b` を押してからもう一度 `b`を押して `bad` とする *
![[Pasted image 20241215194631.png|frame]]
*最新のコミットが `bad` と記録される *
![[Pasted image 20241215194734.png|frame]]
*最初のコミットを選び `b`-> `g` で `good` と記録する *
この後は対象コミットを絞り込んでいく。
## 中間のコミットで動作を確認する
ちょうど中間くらいのコミットが自動で `current` に設定され、チェックアウトされる。
![[Pasted image 20241215194849.png|frame]]
*スクロールバーからちょうど中間であることが分かる*
`vusted lua` は失敗するので、**この結果は `good` になる**。`b` -> `g` として `good` を記録する。
> [!attention]
> [[#目的]] で定義したとおり **テストが通る場合は `bad`、通らない場合が `good`** なので間違えないように。
## 最新と中間の間のコミットで動作を確認する
中間の状態は初期コミットの状態と変わらなかったので、原因のコミットは最新のコミット側にあると判断し、次のチェックアウト対象のコミットが決まる。
![[Pasted image 20241215195157.png|frame]]
*スクロールバーから中間より最新側であることが分かる*
ここでは `vusted lua` が成功したので `bad` を記録する。
## 最後の原因コミットまで繰り返す
先ほどの結果から、もう少し中間寄りのコミットになる。ここまでくると、一画面でどのような結果が蓄積されているのかが分かってくる。
![[Pasted image 20241215195435.png]]
結果だけを記載すると
- `bad`
- `good`
- `good`
となりいよいよ大詰め。
![[Pasted image 20241215195701.png]]
最終的にはそのあと `bad` -> `good` となり以下の結果が表示される。
![[Pasted image 20241215195752.png|frame]]
*最後が `good`だったので `bad` の要因は `9cd4ebd` と決定された*
このコミットメッセージは `test: Add tests` であり、このタイミングから `vusted lua` が成功するようになったのも納得だろう。
最後に `Enter` を押すと `git bisect reset` がかかり、HEADが元に戻る。