Как я могу сократить git bisect, используя пути к файлам? - PullRequest
20 голосов
/ 05 июля 2010

Я использую git bisect , чтобы найти коммит, вызывающий сбой. Однако многие коммиты в диапазоне определенно не имеют значения (потому что они коммиты в документации или в модульных тестах). Я бы хотел, чтобы git bisect автоматически пропускал коммиты, которые влияют на файлы в определенных каталогах. Возможно ли это как-то?

1 Ответ

29 голосов
/ 05 июля 2010

У вас есть несколько вариантов здесь:

  1. Игнорирование определенных коммитов

    git bisect содержит функциональность пропуска коммитов. Вы можете указать коммиты, теги, диапазоны, которые вы не хотите тестировать с помощью

    git bisect skip 0dae5f ff049ab ...
    

    Просто сделайте это перед вами git bisect run, и оно должно пропустить то, что вы указали.

  2. Указание папок с неработающими источниками

    Вы также можете сократить тесты коммитов 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/`
...