Общий шаг выпуска:
Создать тег из основной / проверенной ветви.Это выпущенный код.И не может быть изменено без ветвления.Это версия 1.0.Вы создаете и развертываете этот код на производственном сервере.
Продолжите кодирование для версии 1.1 в основной ветви (транке).В конце версии 1.1 вы создадите еще один тег, который будет выпускать версию 1.1.И так далее.
В идеале вы должны хранить по одной метке на релиз.Если есть исправленные места, которые должны перейти к ранее выпущенной версии, вы (1) создаете ветку из этого тега (скажем, 1.0), (2) исправляете проблему в ветке, (3) создаетеЕще один тег из этой ветки, как выпуск версии 1.0.1
Обратите внимание, что файлы не удаляются во всем процессе.Вы просто создаете новые ветви, которые являются дешевыми копиями вашей базы кода.
Обновление
Нотогда как я могу обновить до тега 1.1 в производстве?Будет ли экспорт SVN перезаписывать существующие файлы и удалять файлы, которые были удалены в теге 1.1?Это мое беспокойство.
Две вещи
Экспорт не удаляет любые файлы из любого места.Он загружает чистую копию (без .svn и других специфичных для SVN материалов) URL-адреса, который вы указали в качестве аргумента.Смотрите здесь svn export
Когда создает ветку или тег, который вы должны скопировать.И НЕ экспорт с последующим импортом.Наиболее распространенный поток релизов выглядит следующим образом: (извините за жалкое искусство)
Состояния репозитория SVN со временем
/---> Tag 1.0.1(release to prod)
/--- Branch 1.0.1 for spot-fixes----|
/ |
/---Tag 1.0 (released to prod) v (merge fixes) /---Tag 1.1 (released to prod)
Trunk ----->'------Development for v1.1----------------'----------------->'----Development for v1.2-->
Вы видите, что ничего не удалено, и у вас есть теги для каждого выпуска.