Перейти к содержимому

Git: я должен оформить заказ версии с тегом или мастера?

-1

Общий вопрос вокруг Git.

Мы работаем в двухнедельных спринтах и ​​у нас есть 4 ветки:

разработать> Release-B-Name (тест)> Release-A-Name (бета)> мастер

Каждый спринт мы создаем новую ветку с некоторым именем (AZ).

Каждый квартал мы объединяем RC в master и помечаем этот код как готовый к работе.

Затем, на производственной коробке, мы выбираем и объединяем последнюю версию мастера (запустив git pull origin master), поэтому каждый квартал производство запускает последнюю и лучшую версию мастера. Это был исторический подход.

Вопрос: Должен ли я запускать / проверять основную ветку или помеченную версию master в рабочей коробке?

Я знаю, что работа с помеченной версией будет делать это в отсоединенном состоянии, но я не вижу проблемы с этим, за исключением случаев, когда нужно сделать исправление?

428 просмотров
AdamJeffers спросил 8 лет назад
A 111

1 ответ

1
Принятый ответ

Отказ от ответственности: лично я довольно скептически отношусь к использованию Git в качестве инструмента развертывания. Реальный инструмент сборки / развертывания будет предлагать много вещей, которые Git не делает: правила создания версий, компиляцию / предварительную обработку, управление правами доступа к файлам и т. Д. Если вы «развертываете» с помощью Git, эти шаги обычно должны выполняться вручную, что отстой. Однако вы, похоже, в принципе удовлетворены процессом развертывания, поэтому я перестану с этим спорить.

Чтобы ответить на ваши вопросы:

Вопрос: Должен ли я запускать / проверять основную ветку или помеченную версию master в рабочей коробке?

Оба могут работать, но я бы предпочел использовать теговую версию . Вытащенные файлы будут точно такими же, поэтому никакой разницы нет. Однако в некоторых случаях использование версии с тегами безопаснее:

  • Если кто-то должен стремиться освоить время между пометкой и развертыванием, вы все равно получите правильную версию.
  • Если позже кто-то просто запустит git pullпроизводство, с настройками по умолчанию и masterпроверкой Git получит последнее состояние master(что бы это ни было). Если тег извлечен, ничего не изменится.

Я знаю, что работа с помеченной версией будет делать это в отсоединенном состоянии, но я не вижу проблемы с этим, за исключением случаев, когда нужно сделать исправление?

Я действительно надеюсь, что вы не намекаете на то, что вы собираетесь устанавливать (и, возможно, даже разрабатывать) исправления в процессе производства? Если да, то, пожалуйста, не надо :-).

В любом случае: да, состояние отсоединенного HEAD не должно быть проблемой. Я бы на самом деле видел в этом выгоду, так как он дает понять, что вы не должны совершать какие-либо действия на производстве. Если вы действительно, действительно чувствуете, что должны, вы всегда можете создать и оформить ветку позже, когда вам это нужно (но, пожалуйста, не надо).


Наконец, несколько советов:

Затем на производственном ящике мы выбираем и объединяем последнюю версию master (запустив git pull origin master)

Даже если вы настаиваете на использовании Git для развертывания, это не очень хорошая идея git pull, потому что git pullона автоматически выполнит слияние, если ранее была проверена неправильная ветвь (или если у вас даже есть локальные коммиты, чего, надеюсь, нет). Объединение приведет к тому, что у вас будет (непроверенный) набор данных из разных веток. Скорее, я бы порекомендовал вам использовать:

git fetch git checkout MY_VERSION_TAG 

Таким образом, вы получите именно файлы MY_VERSION_TAG. Кроме того, я настоятельно рекомендую вам проверить наличие локальных изменений git statusперед использованием. Если таковые обнаружены, исследуйте их перед развертыванием.

Спасибо за подробный ответ. Не уверен, почему кто-то за тебя проголосовал ?! Когда я говорю «исправление», я просто имею в виду исправление локально, тестирование его, а когда оно проходит, «вишня» в мастер, который затем может быть извлечен. Но если я запускаю тег, я не могу просто вытянуть это исправление, как вы говорите. Я подумаю над этим;)

AdamJeffers · 8 лет назад · 0

@AdamJeffers: Хорошо, разработка таких исправлений звучит разумно. Также я не вижу проблем с развертыванием. Вы просто относитесь к исправлению как к любому выпуску (который вы должны в любом случае): вы помечаете его (что-то вроде «2018-q3-hotfix33»), а затем извлекаете этот тег, как я описал выше.

sleske · 8 лет назад · 0

Ах, еще одна вещь: очевидно, что исправление должно быть разработано (локально) поверх текущей рабочей версии (т. Е. Проверить тег pro, основать на нем ветвь, а затем исправление). Протестируйте, разверните и добавьте тег pro в ветку dev. Ввод вишни в производство - ИМХО очень плохая практика (потому что вы не используете то, что тестировали).

sleske · 8 лет назад · 0

Да это я и имел ввиду;)

AdamJeffers · 8 лет назад · 0
sleske ответил 8 лет назад
S 17 736