Ответ 1
Основная функция, используемая всеми VCS для различной задачи, которую вы упоминаете, - ветвление: способность изолировать усилия по разработке в совместной путь. Поскольку это центральный VCS, несколько разработчиков могут сотрудничать в одной ветки с пессимистическими или оптимистичными блокировками файлов, чтобы разработать параллельную историю.
Но наличие VCS имеет два основных влияния на ветвление:
- Он имеет тенденцию препятствовать фиксации, потому что как только файл будет зафиксирован, он немедленно повлияет на рабочую область других представлений с той же конфигурацией (т.е. "работает на одной ветки" ).
~ Процесс публикации является активным, с немедленными последствиями,
~ в то время как "потребляющая" часть (обновление вашей рабочей области) является пассивной (вы вынуждены иметь дело с изменениями, опубликованными другими сразу после обновления вашего рабочего пространства). - Это хорошо работает для линейного рабочего процесса слияния (т.е. "только сливается из ветки А в ветвь Б, а не смешивается в обоих направлениях" - от A до B от A до B...). Слияния тривиальны, все модификации от A просто переносятся на B
Сейчас:
Реализация функции
Любой VCS сделает это, создав ветку, но меня очень удивило, что ветвь "feature" не просто:
* функция может стать слишком сложной
* он может быть готов к следующему выпуску
* только часть его может потребоваться объединить обратно в основную ветвь развития
* это может зависеть от других функций, которые еще не выполнены полностью
Итак, вам нужно быть осторожным в том, как вы управляете веткой функций, и ваши коммиты: если они тесно связаны с одной и той же функцией, все будет хорошо (вы объедините все это в свою основную ветвь развития, когда вы нужно это). В противном случае частичные слияния нелегки с этими инструментами.
Исправление ошибок
Разница между исправлением ошибок во время разработки и после выпуска заключается в том, что в первом случае вы можете часто делать это линейно в одной ветки, так как в последнем случае вам нужно будет установить ветвь с исправлением ошибок и решить, что ошибки, которые вам понадобятся для обратной связи с вашей текущей ветвью развития.
Обзор кода
Лучше всего использовать внешние инструменты (например, Crucible) и широко использует функции VCS, такие как винить или аннотации, чтобы лучше назначать исправления кода после обзора.
Код рефакторинга (пост-код-обзор)
Если рефакторинг является незначительным, он может продолжаться в той же ветки. Но если он большой, необходимо настроить специальную ветку, с выполнением модульного тестирования перед началом рефакторинга.
Включить патчи
Тот же комментарий, что и последняя точка. Если патч является большим, необходимо создать ветвь.
Освобождение новой версии вашего приложения
VCS покажет вам, когда дело доходит до выпуска вашего приложения, потому что это не инструмент управления выпуском.
Вам нужно будет сначала идентифицировать версию, которая будет выпущена (метка), но после этого произойдет процесс развертывания, который включает в себя:
- остановка текущего запуска
- копирование новых файлов
- развертывание их (обновление базы данных sql, webapp,...)
- создание всех конфигурационных файлов (с правильными значениями, адресами, номером порта, путями,...)
- перезагрузка (и если ваша система состоит из нескольких компонентов, перезапустите их в правильном порядке!)
Ключевыми элементами управления VCS и релизами являются:
- они не очень хорошо адаптированы для хранения двоичных файлов, которые должны быть выпущены, что означает, что вам нужно их для создания вашего приложения, а не для хранения полученного исполняемого файла
- они не всегда приветствуются в производственной среде (где ограничения безопасности ограничивают доступ к записи, а также количество инструментов, работающих на этих платформах, в основном средства мониторинга и отчетности).
Механизм выпуска также влияет на двоичные зависимости:
- для внешних двоичных зависимостей, вы, вероятно, будете использовать такие механизмы, как maven, чтобы получать исправленные версии внешних библиотек.
- но для внутренних зависимостей, когда вы не разрабатываете только одно приложение, а несколько, которое зависит друг от друга, вам нужно знать, как ссылаться на двоичные файлы, создаваемые другими приложениями (внутренние двоичные зависимости), и они обычно выигрывают ' t хранится в вашем VCS (особенно на этапе разработки, где вы можете создавать множество разных релизов для других приложений, которые могут быть использованы).
Вы также можете выбрать, чтобы быть в исходных зависимостях (и получить все источники других внутренних проектов, которые вам нужны для вашего), и VCS хорошо адаптирован для этого, но не всегда возможно/практически перекомпилировать все.