В Mercurial есть встроенная команда bisect, которая, по сути, делает то, что вы ищете.
Он предназначен для работы с написанным пользователем сценарием, но в двух словах, он выполняет бинарный поиск, где ваш сценарий (который запускает модульные тесты) сообщает бисекту, прошла ли проверенная ревизия «успешно» или «не удалось» и основана на этом он перемещается по истории, пока не найдет ревизию, в которой была введена ошибка.
Я не уверен, существует ли такой инструмент для SVN, но я нашел, что пополам с Mercurial очень полезно для такого рода вещей.