I've always wished git bisect had a first-parent flag, e.g. "git bisect start --first-parent" This option would be particularly useful in avoiding false positives when bisecting, if a merged branch contained broken or non-buildable commits, but the merge itself was OK. There have been a couple attempts/iterations towards this functionality in the past two years or so, and I'd like to get this across the finish line. The previous iterations have focussed on the preliminary step of editing functions in bisect.c to accept a first_parent_only parameter, enabling the --bisect and --first-parent flags to be used in conjunction with git rev-list. In addition to updating git rev-list, I intend to enable the --first-parent flag on git bisect as well. I've taken some of the feedback from previous iterations into account, specifically tidying up the code that assigns weights to commits in do_find_bisection(), utilizing existing commit graphs when running tests, and clarifying the test for "git rev-list --bisect-all --first-parent" Previous two iterations (most recent first): https://lore.kernel.org/git/20191105052141.15913-1-workingjubilee@xxxxxxxxx/ https://lore.kernel.org/git/20180828123234.44582-1-tiagonbotelho@xxxxxxxxxxx/ Related discussion about combining multiple boolean params passed to find_bisection() into a single unsigned integer: https://lore.kernel.org/git/20180415085841.1269-1-haraldnordgren@xxxxxxxxx/ Aaron Lipman (3): rev-list: allow bisect and first-parent flags bisect: introduce first-parent flag bisect: combine args passed to find_bisection() Documentation/git-bisect.txt | 13 +++++- Documentation/rev-list-options.txt | 7 ++-- bisect.c | 66 +++++++++++++++++++++--------- bisect.h | 7 +++- builtin/bisect--helper.c | 16 ++++++-- builtin/rev-list.c | 9 +++- revision.c | 3 -- t/t6000-rev-list-misc.sh | 4 +- t/t6002-rev-list-bisect.sh | 45 ++++++++++++++++++++ t/t6030-bisect-porcelain.sh | 17 ++++++++ 10 files changed, 151 insertions(+), 36 deletions(-) base-commit: 00a7a21b97a47889cf66de32f8defed023c14c2c Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-686%2Falipman88%2Fbisect_first_parent_final_draft-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-686/alipman88/bisect_first_parent_final_draft-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/686 -- gitgitgadget