Какая ваша идеальная ветвь в git для веб-приложений? - PullRequest
6 голосов
/ 06 июля 2011

Мы небольшая команда разработчиков и создающих веб-приложение. В настоящее время у нас есть живая среда, тестирование и несколько сред разработки.

Какую архитектуру ветки вы бы предложили, чтобы в идеале каждый разработчик мог работать над своими функциями, чтобы их можно было протестировать и развернуть, не затрагивая других разработчиков / функций?

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

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

Спасибо за мнения.

Ответы [ 4 ]

3 голосов
/ 06 июля 2011

Некоторое время я следовал этим полезным правилам, описанным Винсентом Дриссеном в его статье Успешная модель ветвления Git .

Вы можете взглянуть туда, и вы увидите, как он описывает управление филиалами и избежать перебазировок

0 голосов
/ 28 октября 2014

Эта слайд-палуба (созданная после ОП и ответа) была очень полезна, когда я изучал варианты, по сути, рекомендует каждому разработчику ветки из одной develop ветви, а затем отодвигает туда и регулярно перезагружает дляпоследние изменения (включая предупреждения).

0 голосов
/ 08 марта 2012

Для веб-приложения вы (надеюсь) ежедневно развертываете рабочий код, поэтому, возможно, вам подойдет одна ветка (master). Используйте непрерывную интеграцию / развертывание, пишите хорошие тесты и разрабатывайте свои функции так, чтобы они выпускались небольшими дозами, а не сразу.

0 голосов
/ 06 июля 2011

Я предполагаю, что вы работаете с централизованным пустым репозиторием, где все вносят свои изменения, а затем вы тянете последнюю ветвь testing в тестовую среду.

Почему бы не использовать Git кактекущую DVCS и просто извлекать функции от каждого пользователя в среду тестирования, когда тестирование предыдущей функции завершено?

Если Билл разрабатывает FeatureX, а Тед разрабатывает FeatureY, они могут сделать свои функции доступными в ветвях, называемыхtesting/feature-x и testing/feature-y соответственно, и вы можете просто оформить bill:testing/feature-x в среде тестирования.

Если все это не удастся, использование нескольких ветвей testing/feature-name-here решит вашу проблему в традиционной централизованной системе.Просто попросите пользователей перенести их ветку testing/... в центральный репозиторий, втянуть их в среду тестирования, удалить ветку, когда она будет протестирована.Вы всегда можете увидеть список функций, ожидающих тестирования, изучив все ветви с префиксом testing/.Если тестирование функции завершается неудачно, у вас есть центрально расположенная ветка, специфичная для этой функции, где вы можете добавлять новые коммиты в fix функцию до ее повторного тестирования.

Что вы делаете сейчас, еслифункция не проходит тестирование, после того, как она переместилась на единственную ветку тестирования?Что если кто-то еще переместил свою функцию для тестирования на ветку, которая теперь содержит поврежденную функцию?

...