То, что вы хотите сделать, обычно называют Непрерывная интеграция (CI).
Хотя вы можете сделать это с помощью Subversion, вероятно, это неправильный инструмент для работы.
Существует специальное программное обеспечение CI, которое позволит вам легко автоматизировать необходимые задачи (извлечение из системы контроля версий, компиляция / сборка, запуск автоматических тестов, развертывание и т. д.).В качестве примера можно привести CruiseControl.NET .
Что касается того, что «не каждый закомментированный файл должен быть запущен в производство», общим решением является наличие специальной ветки «release», которая развертывается.Там объединяется только проверенный код (или магистраль всегда должна быть стабильной, в противном случае та же модель).Конечно, вы можете (лучше: дополнительно) иметь тесты перед автоматическим развертыванием и развертывать их только в том случае, если все тесты пройдены.
Работа с веткой выпуска
ВНа практике это означает, что люди проверяют свой код при его создании.Иногда этот код будет работать, иногда нет.Когда время выпуска приближается, в Subversion создается «ветвь релиза».Эта ветвь релиза фактически является замороженным снимком источника, каким он был во время ветвления.Теперь эту ветку можно использовать для компиляции и развертывания приложения, которое затем можно протестировать.
Новый код не добавляется в ветку (но проверки могут продолжаться в других местах).Только если в ветке обнаружена ошибка, в ветку будет добавлена проверка для ее исправления.Это продолжается до тех пор, пока ветвь не пройдет все тесты.Затем ветка может быть выпущена как новая версия программного обеспечения;впоследствии ветвь будет использоваться только в том случае, если необходимо обновить исправленную версию.
Конечно, любые исправления ошибок, добавленные в ветку, также должны быть помещены в транк (либо путем слияния ветки -> транк, для чегоSubversion предоставляет специальную поддержку или, при необходимости, переопределение исправления в багажнике.