When the build fails against HEAD OSS-Fuzz, we find the date of the
commit for the project, and use the latest revision of OSS-Fuzz before
it to rebuild the project builder container.
Subsequent runs will use the last built container, and if that fails
that will again find the closest revision of OSS-Fuzz.
Also factor BaseRepoManager out of RepoManager to provide a generic repo
manager class for dealing with existing checkouts (which don't need a
clone).
Let build failures continue during the actual bisection for now to keep
the bisection going. A future PR can improve the logic of that when it
happens.
* Max comments
* Added bisection tests
* Added test cases
* Docker run command added to build_specific commit
* Infer main repo uses docker image rather than docker file
* Added mores tests for repo infer
* With verbosity
* Formatting
* Bisection fixed
* Formatting updates
* Oliver small comments.
* Script infer main repo
* Detect repo and test module finished
* Detect main repo from script
* Regex searching
* Regex searching
* Max comments + bisector test script
* Oliver comments
* Max's comments
* String concat update
* Jonathan comments
* Starting the git python API
* repo manager working with tests
* Docker repo manager working, can update image with specific commit
* Working bisection
* Formatting and linting
* Working bisection
* Specific commit checkout
* Specific commit checkout
* Removed bisector and updated helper
* remove branch bug
* Max comments
* Added tests for infer main repo
* Oliver comments
* helper.py function names change
* Oliver comments pt. 2
* Olivers comments
* Formatting updates
* Removing DockerRepoManager class
* Removing DockerRepoManager class
* Changing from copying repo to docker image to mounting repo on docker image
* Jonathan comments
* Build image from commit tests
* Oliver comments pt.3
* Oliver comments pt.4
* Linting
* Max comments pt. 2
* change check commit exists
* Max comments pt. 3
* Regex updated
* Formatting updates