Проблема с чисто технической точки зрения заключается в том, что вы пытаетесь управлять поведением системы контроля версий на основе результатов сборки в среде непрерывной интеграции, которая находится немного впереди. Я не знаю ни одного способа заставить разработчиков отказаться от более ранней ревизии по тому же пути в зависимости от результата сборки CI.
Но на самом деле это проблема практики разработки. Разработчики не должны делать код, который «нарушает сборку», и много написано о наказаниях, которые должны быть выплачены тем, кто это делает:)
Но, конечно, локальная сборка может быть успешной, в то время как сборка из кода, интегрированного обратно в транк, может дать сбой. Вот почему такие продукты, как TeamCity, имеют концепцию «персональной сборки», при которой незавершенная работа может быть построена на соединительной линии и зафиксирована только после успешной сборки.
Короче говоря, ваша проблема известна и признана, и для ее решения существует комбинация инструментов и методов. Но практика не включает в себя запрет на извлечение кода на основе результатов сборки.