summaryrefslogtreecommitdiff
path: root/src/content/tils/2020/11/12/git-bisect-automation.adoc
blob: d7ea2ca5aa8522eddd754955c52a889c0a028ee3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
= Git bisect automation
:categories: git
:sort: 1

It is good to have an standardized way to run builds and tests on the repository
of a project, so that you can find when a bug was introduced by using
`git bisect run`.

I've already been in the situation when a bug was introduced and I didn't know
how it even was occurring, and running Git bisect over hundreds of commits to
pinpoint the failing commit was very empowering:

....
$ GOOD_COMMIT_SHA=e1fd0a817d192c5a5df72dd7422e36558fa78e46
$ git bisect start HEAD $GOOD_COMMIT_SHA
$ git bisect run sn -c './build.sh && ./run-failing-case.sh'
....

Git will than do a binary search between the commits, and run the commands you
provide it with to find the failing commit.

Instead of being afraid of doing a bisect, you should instead leverage it, and
make Git help you dig through the history of the repository to find the bad
code.