С точки зрения конфигурации (общие), решение состоит в том, чтобы иметь несколько соединительных линий (ветвей):
- Release
- Интеграция
- Разработка
Release
Этот ствол / ветвь содержит программное обеспечение, которое прошло проверку качества и может быть передано клиенту. После выпуска все файлы помечаются как «только для чтения». Им присваивается метка для идентификации файлов с номером выпуска.
Периодически или по требованию гуру тестирования берут последнюю версию (подсказку) из магистрали интеграции и подчиняются изнурительным качественным тестам. Таким образом интеграционная версия повышается до версии выпуска.
Интеграция
Этот транк содержит последний рабочий код. Он содержит исправления ошибок и новые функции. Файлы должны быть помечены после каждого исправления ошибки или новой функции.
Код перемещается в ветку интеграции после того, как ошибка прошла качественное тестирование или новая функция полностью разработана (и протестирована). Хорошая идея - пометить версию интеграции временной меткой перед интеграцией кода разработчика.
Разработка
Это ветки, созданные разработчиками для исправления ошибок или разработки новых функций. Это может быть копия всех файлов, перемещенных на их локальный компьютер, или только файлы, которые необходимо изменить (со ссылками на соединительную линию для всех других файлов).
При перемещении между соединительными линиями код должен пройти квалификационное тестирование, и должно быть разрешение на перемещение в соединительную линию. Например, неоправданные новые функции нельзя помещать в ветку интеграции без авторизации.
В вашем случае файлы должны быть либо возвращены обратно в ствол интеграции после их изменения, либо полностью новую ветвь или ствол, если код слишком отличается от предыдущей версии (например, добавление новых функций).
Я изучал GIT и SourceSafe, пытаясь выяснить, как реализовать эту схему. Схема легко реализуется в более крупных приложениях для управления конфигурацией, таких как PVCS и ClearCase. Похоже, для GIT необходимы дублированные репозитории (один репозиторий для каждой магистрали). SourceSafe четко заявляет, что он допускает только одну метку на версию, поэтому файлы, которые не были изменены, будут терять информацию метки.