ОК, так что, если я правильно понял ваш вопрос, то у вас есть
1. Несколько программ
2. Несколько команд, которые работают над исходным кодом
3. Необходимо отслеживать, какие команды работают над каким кодом
Вы не указываете, работает ли каждый раз только на одной программе или эта программа
может работать совместно несколькими командами.
Я не пользователь GIT или SVN, мой основной опыт связан с производительностью, но я постараюсь изложить некоторые лучшие практики, которые должны работать для любой системы SCM крупного уровня предприятия
- Иметь ветвь кода основной линии - это будет ваша «чистая» область.
- Создать ветку песочницы для каждой команды
- Использовать четкие соглашения об именах
Каждая песочница команды будет иметь полные права доступа только к этой песочнице, но не к песочнице любой другой команды.
Так что с точки зрения расположения хранилища, тогда что-то вроде этого
Затем каждая команда будет переносить код того, с чем они хотят работать, в свою песочницу команды и будет иметь возможность регистрировать все, что пожелает. Если они испачкают свою собственную ветвь, тогда все в порядке, их проблема - разбираться между собой и вести себя так, как они считают нужным.
Когда команда довольна, у нее есть хорошая следующая итерация кода, тогда только руководитель группы
имеет разрешение на продвижение и интеграцию изменений до основной линии
Любой приличный SCM покажет вам историю интеграции, поэтому при каждом внесении изменений в основную линию вы будете знать, какая команда интегрирована и когда.
Если команда расформирована, вы можете покинуть ветку, если хотите
Если имя команды меняется, создайте новую ветвь sanbox для новой команды, а затем интегрируйте изменения из старой песочницы команды в новую песочницу
Во время исполнения вы можете делать некоторые интересные вещи, такие как обратная интеграция, что очень приятно, потому что вы можете перенести основную линию в вашу ветку, выполнить любые слияния и затем вернуться обратно к основной. Пока в коде ничего не изменилось, интеграция становится простой копией. Это имеет преимущество, заключающееся в том, что проталкивает «сломанную» магистраль вниз в песочницу и сохраняет магистраль в чистоте
Во всяком случае, это некоторые мысли от меня. Управление SCM само по себе является целой областью, и я уверен, что многие другие люди найдут более удачные решения, но вышеуказанный подход сработал для меня
Некоторые полезные ссылки в этой сложной области:)
Моделирование жизненного цикла программного обеспечения
Лучшие практики в SCM
SCM intro - репозитории
SCM интро - филиалы