Работа по управлению конфигурацией (из которых управление версиями является только одной частью) должна быть в состоянии сделать следующее:
- Узнайте, какие изменения и исправления ошибок были внесены в каждую поставленную сборку.
- Уметь воспроизводить точно любую поставленную сборку, начиная с исходного исходного кода. Автоматически сгенерированный код не считается «исходным кодом» независимо от языка.
Первый гарантирует, что когда вы сообщаете клиенту или конечному пользователю «ошибка, о которой вы сообщили на прошлой неделе, исправлена, и добавлена новая функция», они не возвращаются через два часа и говорят «нет, это не так ». Это также гарантирует, что они не скажут: «Почему он делает X? Мы никогда не просили X».
Второй означает, что когда клиент или конечный пользователь сообщает об ошибке в какой-то версии, выпущенной год назад, вы можете вернуться к этой версии, воспроизвести ошибку, исправить ее и доказать, что это исправление устранило ошибку. ошибка, а не какое-то возмущение компилятора и другие исправления.
Это означает, что ваш компилятор, библиотеки и т. Д. Также должны быть частью CM.
Итак, теперь, чтобы ответить на ваш вопрос: если вы можете сделать все вышеперечисленное, вам не нужно записывать какие-либо промежуточные представления, потому что вы гарантированно получите тот же ответ в любом случае. Если вы не можете сделать все вышеперечисленное, тогда все ставки сняты, потому что вы никогда не сможете гарантировать, что сделаете одно и то же дважды и получите один и тот же ответ. Так что вы можете также поставить все ваши файлы .o под контроль версий.