Я использую git bisect, чтобы найти отказ, вызывающий фиксацию. Тем не менее, многие коммиты в диапазоне определенно неактуальны (потому что они фиксируют документацию или модульные тесты). Я хотел бы сделать git bisect автоматически пропускать фиксации, которые влияют на файлы в определенных каталогах. Возможно ли это как-то?
Как я могу выполнить прогон git bisect с использованием путей к файлу?
Ответ 1
У вас есть несколько вариантов:
-
Игнорирование определенных коммитов
git bisect
содержит функциональность пропущенных коммитов. Вы можете указать коммиты, теги, диапазоны, которые вы не хотите тестировать с помощьюgit bisect skip 0dae5f ff049ab ...
Просто сделайте это перед
git bisect run
, и он должен пропустить то, что вы указали. -
Указание папок со сломанными источниками
Вы также можете сократить тесты commits
bisect
, указав, в каких папках он должен искать проблемы. Это делается в начале процессаbisect
, дополняя дополнительные аргументыgit bisect start
(цитата из стандартного руководства):git bisect start -- arch/i386 include/asm-i386
Bisect рассмотрит только фиксации, которые касаются указанных папок.
Если вы хотите автоматически собирать фиксации, которые касаются определенных файлов или папок, вы можете использовать git log
для этого. Например, следующая команда даст вам имена фиксаций, которые изменяют файлы в определенных папках:
git log --pretty=format:%H tests/ docs/
И вы можете предоставить результат git bisect skip
с использованием возможностей оболочки:
git bisect skip `git log --pretty=format:%H tests/ docs/`