Вот как ты, котан, ищешь недавний баг в проекте?
Выкатываешься куда-нибудь, тестируешь, откатываешь последний коммит, да?
А что если баг оказался хитрее, обошел тесты и уже сидит на проде, ножками качает?
Тут в дело вступает встроенный в git инструмент бинарного поиска:
git bisect. Принцип прост: помечаем заведомо плохой коммит или тег (последний) и заведомо хороший (ну, за сутки до бага):$ git bisect start
$ git bisect bad # Current is bad
$ git bisect good v2.6.13-rc2
После чего bisect выберет средний коммит из этих двух. Теперь нужно собрать проект и протестировать. Если эта версия работает хорошо, сообщаем
bisect об этом: git bisect good. Ну или bad, если нет. И продолжаем; снова случится checkout коммита посередине. Можно искать не только баги, но и любое изменение в коде. Так что вместо меток
good и bad есть ещё old и new. Не так давно я не знал об этом инструменте и буквально повторил тот же алгоритм поиска сам. Ну, бывает.
#git #bisect #бородач
