TLDR
git bisect bad
пометить текущий коммит как “плохой”.
git bisect good HASH
пометить коммит с хешом HASH как “хороший”.
git bisect run npm run build
запустить bisect
, где критерий хорошести - код завершения скрипта npm run build
.
Может вы знаете про команду git bisect
. Она очень помогает найти коммит, который отвечает за интересуемый эффект.
Например. Вы работаете с несколькими командами, кто-то внес именение в ваш проект (коммит) и ваш проект перестал собираться (интересуемый эффект). Вы точно знаете коммит, на котором проект собирался, и точно знаете коммит, на котором проект не собирается, но не знаете на каком коммите проект перестал собираться. bisect
помогает найти конкретный коммит, на котором начал проявляться эффект.
Если решать задачу поиска проблемного коммита через git bisect
“влоб”, то шаги выглядят так:
- пометил коммит как “плохой”
- пометил коммит как “хороший”
- запустил bisect
- git зачекаутил коммит
- попробовал сделать сборку
- если не собралось, то пометил коммит как “плохой”
- если собралось, то пометил коммит как “хороший”
- повторять пока гит не скажет на каком коммите эффект начал проявляться
Как можно догадаться, процесс это муторный. Но есть способ его автоматизировать. Гиту можно передать скрипт, результат работы которого будет сигнализировать гиту рабочий коммит (если скрипт завершился с кодом 0
).
Беря пример выше, допуская что сборка выполняется через npm run build
, шаги будут выглядет как:
- пометил коммит как “плохой”
- пометил коммит как “хороший”
- запустил bisect, дал ему скрипт и жди результатов
git bisect run npm run build
Статья в рамках рубрики “Today I Learned”