Skip to Main content Skip to Navigation
Preprints, Working Papers, ...

Theoretical analysis of git bisect

Julien Courtiel 1 Paul Dorbec 1 Romain Lecoq 1 
1 Equipe AMACC - Laboratoire GREYC - UMR6072
GREYC - Groupe de Recherche en Informatique, Image et Instrumentation de Caen
Abstract : In this paper, we consider the problem of finding a regression in a version control system (VCS), such as Git. The set of versions is modelled by a Directed Acyclic Graph (DAG) where vertices represent versions of the software, and arcs are the changes between different versions. We assume that somewhere in the DAG, a bug was introduced, which persists in all of its subsequent versions. It is possible to query a vertex to check whether the corresponding version carries the bug. Given a DAG and a bugged vertex, the Regression Search Problem consists in finding the first vertex containing the bug in a minimum number of queries in the worst-case scenario. This problem is known to be NP-hard. We study the algorithm used in Git to address this problem, known as git bisect. We prove that in a general setting, git bisect can use an exponentially larger number of queries than an optimal algorithm. We also consider the restriction where all vertices have indegree at most 2 (i.e. where merges are made between at most two branches at a time in the VCS), and prove that in this case, git bisect is a 1/log(3/2)-approximation algorithm, and that this bound is tight. We also provide a better approximation algorithm for this case.
Complete list of metadata
Contributor : Romain Lecoq Connect in order to contact the contributor
Submitted on : Tuesday, November 16, 2021 - 4:42:28 PM
Last modification on : Saturday, June 25, 2022 - 9:57:19 AM
Long-term archiving on: : Thursday, February 17, 2022 - 8:16:33 PM


Files produced by the author(s)


  • HAL Id : hal-03431454, version 1


Julien Courtiel, Paul Dorbec, Romain Lecoq. Theoretical analysis of git bisect. 2021. ⟨hal-03431454⟩



Record views


Files downloads