В текущем месте, где я работаю, система контроля версий является одной из самых передовых и зрелых. Вот как мы делаем.
У нас есть нечто, называемое "основной" ветвью, которая является базой кода, которая будет в производстве. Обратите внимание, кодовая база в одной огромной гигантской структуре. Скажем, если придет новый проект, мы должны сделать предварительную оценку и закажем неделю релиза. Теперь мы должны начать работать над этим. Итак, мы отрезаем ветку от main, называемую Feature Feature. Команда или группа разработчиков продолжают работать в этой конкретной функциональной ветви. Обратите внимание, что в основной ветви одновременно будет много срезов ветвей элементов.
Теперь, когда разработка закончена, она объединяет код с основной. Мы не будем делать это напрямую, поскольку это может привести к хаосу из-за очевидных проблем критичности. Итак, у нас есть еще одна ветвь, вырезанная из основного, называемая предварительным выпуском. Мы объединяем весь наш код с этой базой выпуска. И сделать сборку на основе полного кода. Сборка должна пройти. Когда это происходит, мы извлекаем зеленую временную метку (последняя пройденная сборка). Как только зеленая отметка времени будет получена, код будет объединен из ветки перед выпуском и основной, и выпуск будет завершен.
Как только код запущен в производство и скажите, что мы столкнулись с некоторыми ошибками, мы вырезали ветку main, называемую веткой с исправлением ошибок. Сделай все изменения. И объединяя его обратно в главное; всегда следует за процессом предварительного выпуска / зеленой отметки времени. Это неизбежно.
Re-база. Итак, сначала я сказал, что мы бы забронировали, когда наша функциональная ветвь должна быть завершена. В течение этого периода будет много обновления кода на главной. Таким образом, очень важно, чтобы вы продолжали обновлять текущую ветку функций, чтобы синхронизировать ее с основной. Для этого выполняется процесс, называемый rebase. Это похоже на получение последнего кода из main, чтобы вы не работали в ветке, которая так устарела. В моей текущей организации ребаз будет запускаться каждые 2-3 недели, хотя политики рекомендуют 1 неделю.
Более интересные функции: скажем, я сейчас работаю над так называемой веткой Feature и хочу получить код от одной из других команд, которые также работают в своей собственной ветке Feature (этот сценарий, хотя кажется, встречается редко). Для этого мы изменим нашу конфигурационную спецификацию (ClearCase - наша система контроля версий), чтобы она указывала на те файлы, которые требуются из другого проекта. Можно использовать LATEST или TIMESTAMP для извлечения этих файлов из другой ветви функций.
Через некоторое время после запуска проекта ветвь функций, которую мы сократили, практически не нужна. Это может быть прекращено системой, скажем, через несколько лет, если пространство будет ограничением.