Как заставить git bisect игнорировать слитые ветки?

Я знаю, что git bisect по своей конструкции ориентирован на ветви, так что если между хорошим коммитом G и плохим коммитом B вы слились в ветви, ему нужно учитывать и эти изменения, поскольку ошибка может содержаться в ветви.

В моем случае у меня есть зависимость в виде боковой ветви, и я время от времени вливаю изменения в свой основной проект. Зависимость можно рассматривать как библиотеку, которая имеет другой способ запуска, другую систему сборки и т.д., чем мой основной проект, но я все еще хочу получать от нее последние изменения путем слияния с основной веткой.

Проблема в том, что при биссектрисе в этом сценарии вы попадаете на некомпилируемые коммиты в коммитах из зависимой ветки.

На самом деле я бы просто хотел рассматривать каждое слияние ветвей как один коммит при выполнении биссекции.

Обходной путь, который я нашёл до сих пор, это составление списка допустимых коммитов G...B с помощью git log --first-parent, а затем при биссекции делать git bisect skip, если текущего коммита нет в этом списке. Однако это занимает много времени (много файлов нужно проверить/изменить для каждого пропуска).

Итак, вопрос: есть ли способ сделать --first-parent в git bisect или предоставить список коммитов, которые я считаю действительными, чтобы избежать проверки ветвей, которые, как я уже знаю, не компилируемы? Как нам проверить только коммиты, отмеченные o на диаграмме?

G---o---o---o---o---o---o---B  main project branch
   /       /       / 
  x---x---x---x---x            dependency
           \ /
            x'                 dependency project taskbranch

Edit: добавлена диаграмма для ясности

34
задан tddtrying 13 April 2011 в 15:24
поделиться