Think of it like sailing when the mast breaks, you don't who last touched the mast, you care how to get the mast back up.
In truth the totality of world events leading up to the moment the mast broke is what lead it to break. This is not important, what is important is how to right it.
If the question is viewed in terms of righting the ship then the point is to identify the last revision that worked, conversely the 'broken' revision is the next one.
Realistically, to solve the problem you'd want a genetic algorithm that could turn on and off each change in each revision to find the combination that yields the most fit iteration of the code.