Разработка и тестирование ветки в модели ветвления Git @nvie?

Я читал о модели ветвления Git @ nvie и gitflow и думаю, что это хорошая модель для проекта (веб-приложения), над которым я сейчас работаю.

Я ведущий разработчик проекта, и я развиваюсь в локальной среде (MAMP-подобной). Всякий раз, когда я делаю что-то, чтобы показать клиенту, я фиксирую свою работу и отправляю ее на центральный хост Git. Оттуда я развернул его на сервере, подключенном к Интернету. Тогда мой клиент может увидеть изменения.

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

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

У меня есть следующие вопросы:

  1. Я часто работаю над несколькими задачами одновременно. Когда часть функции готова, я иногда хочу показать ее своему клиенту, прежде чем продолжить работу над этой функцией. Однако, насколько я понимаю, функция (ветвь) будет объединена только с develop когда он закончится и запланирован к выпуску. Как я могу показать функции, которые выполняются (или еще не запланированы к выпуску) моему клиенту (в среде разработки)?

  2. Из какой ветки мне следует развернуть среду тестирования? Должен ли я вручную выбрать ветку релиза того времени или может быть специальная ветка тестирования?

2 ответа

Решение

Вот мой взгляд на это:

  1. Вы можете развернуть ветвь функций, которую хотите показать, в среде разработки. Просто не забудьте развернуть ветвь разработки после того, как клиент увидит новую функцию.

  2. Для среды тестирования вы используете ветку релиза. После того, как период тестирования закончится, и вы выпустите свое приложение, вы развернете основную ветвь в среде тестирования до следующего графика выпуска.

Отказ от ответственности: я разработчик git-flow (AVH Edition)
Что вам нужно помнить, так это то, что оригинальное программное обеспечение gitflow не удаляет удаленные функции и не выпускает ветки. Поэтому, когда вы заканчиваете функцию или релиз с исходным Gitflow, вам необходимо вручную удалить удаленные ветви. В git-flow (AVH Edition) программное обеспечение заботится об этом.

Ветви объектов могут быть переключены в любое время с помощью 1 команды (git checkout). Иногда (в режиме разработки, я поддерживаю сервер приложений и выключаю код, даже не перезагружая сервер!). независимо от того, в какой ветви я нахожусь, я все еще в режиме "разработки".
Так что переключитесь на нужную вам ветку и продемонстрируйте ее. затем переключитесь обратно на мастер или любую другую ветку, которую хотите.
Первоначально я работал в магистратуре в некоторых организациях, но теперь я делаю всю свою работу - функции, хлопоты или ошибки в филиалах. Часто я помечаю имя ветви и / или фиксирую текст с помощью идентификатора из системы отслеживания (в нашем случае Pivotal Tracker).
Хитрость заключается в том, чтобы поддерживать ветки в актуальном состоянии с помощью частых git fetch последних версий master и git merge master (находясь в ветке 'topic').

Для других сред у меня настроены пульты, например mycoolapp-stage, и я отправляю код на них отдельно. У меня есть около 6 различных пультов для 1 приложения, 4 из которых используются для тестирования.

Что касается тестирования, то тестировщик может либо вносить изменения и работать локально в среде разработки (работает как для программистов, так и для тестировщиков QA), либо они могут просто использовать область тестирования или промежуточной обработки, в которую вы помещаете код в качестве удаленного.

В целом, вы работаете в филиалах, а затем проталкиваете вещи через мастера. Смотрите больше информации в моем ответе о процессе в git branch, fork, fetch, merge, rebase и clone, в чем различия?

Другие вопросы по тегам