У меня есть хранилище со сложным деревом ветвей и слияний, и я хочу использовать git bisect, чтобы найти, когда была введена ошибка.
У меня есть хороший коммит и плохой коммит, чтобы запустить пополам, где хороший коммит является предком плохого.
Я бы ожидал от git bisect
до go коммитов, которые имеют хороший коммит в качестве предка, но это не так (использование git 2.21.0).
В настоящее время я делаю биссект вручную, сохраняя список коммитов и используя git rev-list --ancestry-path GOOD..BAD
и выбирая коммит в середине. Есть ли способ автоматизировать это с git bisect
? Есть ли у него флаг, чтобы остаться в пути предков?
Причины для деления пополам в пути предков
Функции, относящиеся к обнаруженной ошибке, могут существовать не во всех ветвях, поэтому проверить неактуально там. Однако они должны существовать в пути предков.
Как только разделение пути предков сделано, вероятно, в качестве вины будет получен коммит слияния, и они будут знать, что ошибка происходит из этой ветви. Это уже многому научит нас об ошибке.
Чтобы продолжить разбивать ветку, в которой была обнаружена ошибка, нужно протестировать не каждый коммит самостоятельно (поскольку они не обязательно имеют функции, необходимые для ошибка на поверхность), но нужно объединить каждый из них с последним хорошим коммитом и затем проверить, существует ли ошибка. Затем можно точно указать конкретный c коммит, который при слиянии с хорошим коммитом вносит ошибку.
Обратите внимание, что я проделал этот процесс несколько раз, и он был очень полезен для меня, и я ' Я просто ищу способы сделать его более удобным.