## 概要 [[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が元に戻る。