2010-06-13 1 views
3

Я пытаюсь понять, как использовать git для нескольких сред (dev-> test-> prod) с продвижением кода. Я немного читал о ветвлении, но не очень понял, как это может решить мою проблему, поскольку у меня должна быть возможность запускать все среды одновременно и отдельно друг от друга.Продвижение кода с помощью Git

Будем очень благодарны за какое-то практическое руководство.

+0

У вашей среды есть другой код? Если они все одинаковые, я не вижу причин для ветвления, просто клонирует. – alternative

ответ

2

Это, по-видимому, обычная тема для этого трехуровневого рабочего процесса. Вот как мы это сделали. Мы - магазин Ruby, так что здесь есть кое-какие тесты.

Мы все работаем над индивидуальными «историями» (от Pivotal Tracker) отдельно друг от друга. Это означает, что если бы мы все взяли на себя ответственность за ведущий, то мы бы постоянно наступали друг на друга. Чтобы остановить эту проблему, каждый из нас создает новую ветку (основанную на последнем хозяине) для этой конкретной части работы.

Когда мы завершаем, что кусок работы, мы запускать тесты сами, и если они переходя затем они сливаются обратно в мастере отрасли, где тесты побежали снова, чтобы гарантировать, что нет никаких обрывов, которые были введены , Если бы мы были, попробуйте использовать git bisect, чтобы выяснить, что это было, и это работает в 99% случаев.

В большинстве случаев (потому что мы действительно классные *), тесты проходят. Когда все тесты проходят на главной ветке, мы развертываем их на нашем промежуточном сервере. Поэтому я предполагаю, что это означает, что мастерisэтап филиал. Когда эта функция (или, более вероятно, функции) получила одобрение, мы сменим эти изменения на ветвь , а затем переместим эту ветвь на производственный сайт.

С помощью этой установки отдельные разработчики могут иметь исполняемую копию приложения для себя, команда QA получает текущую копию, чтобы перейти, когда у нее есть время (это «самая забавная» часть моя работа, сбор людей похож на пасущихся кошек), а у Real World есть идеальный сайт.

В теории, во всяком случае. Люди ошибаются.

1

DVCS вводит another dimension to versioning:
«Публикация» (тяни/толкай)

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

Для окружающей среды с несколькими вкладами местные отдельные ветви, такие как Райан, работают лучше всего.

Но с помощью DVCS вы можете просто подтолкнуть базу кода в выделенный репозиторий и считать этот клон «средой для тестирования».
Как правило, вы бы first rebase свою текущую работу над удаленным продвинутым кодом, чтобы разрешить локально любой конфликт. И тогда вы будете нажимать (ускоренное слияние на удаленной стороне).

Так что это еще один инструмент, который вы можете использовать для продвижения кода (при использовании ветвей или ярлыков: обычно «производство» лучше всего идентифицируется веткой).

1

Im мое дело, git push предназначено для публикации файлов от разработчика до сервера тестирования.Затем мы делаем ежедневные (или еженедельные) сборки (используя phing), чтобы экспортировать приложение на рабочий сервер (там нет git repo) или опубликовать tarball с исходным кодом для загрузки.

Рабочий процесс зависит от ваших конкретных переменных проекта.

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

Естественный способ изменения всех параметров сразу же меняет репо, поэтому он переместится между репозиториями dev/test/production.

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

Смежные вопросы