Хорошо, добавим часть ответа.
С точки зрения номера версии (не говоря уже о механике) номер ревизии Subversion довольно полезен - вы, вероятно, захотите контролировать Major и Minor, но тогда использовать номер ревизии оттуда (3-й или 4-й элемент) - это хорошо. Что еще более важно, даже если вы не отметили хранилище специально при выпуске, у вас все еще есть средства, чтобы добраться до кода в правильном состоянии.
Что приводит нас к механике - это будет несколько зависеть от языка. В сборке C # вы хотите изменить AssemblyInfo.cs, чтобы получить желаемые значения, на других языках я не уверен, что у меня в голове (буду редактировать в ответ на полезные комментарии!). Если вы сможете сделать это правильно, вы сможете идентифицировать код для всех ваших сборок в развернутом проекте.
Итак ... как вы получаете ваш AssemblyInfo.cs или его эквивалент прямо в сборке релиза? Наличие скрипта сборки (MSBuild или чего-либо другого) сделает это за вас - возможно, правильная сборка файла является болезненной (я уже делал это раньше), особенно когда вы начинаете добавлять сложности, такие как получение номеров ревизий , но есть и другие инструменты, которые могут помочь, что подводит меня к желательности сервера сборки.
Одна из вещей, которые я недавно обнаружил о TeamCity , заключается в том, что у вас есть системные переменные, которые вы можете вставить в свой скрипт сборки - поэтому у меня есть номер сборки TeamCity (включающий в себя SVN Revision и TeamCity счетчик build) как мой идентификатор - наши пакеты выпуска являются артефактами сборки, созданными TeamCity, поэтому моя способность идентифицировать конкретную сборку довольно хорошая. Я уверен, что другие серверы имеют аналогичные возможности. Я еще этого не сделал, но моим следующим шагом будет создание "релизных" сборок в Team City, которые я могу запустить вручную - я намерен автоматизировать этап создания тега в Subversion, а также некоторые другие этапы. (например, настройка web.config).
Больше указателей на ответы, чем реальный ответ, но инструменты уже есть (MSBuild с задачами сообщества, TeamCity, другие ...), просто вопрос их объединения.