Правильный способ использования Git / GitHub - система PHP с серверами Dev / Testing / Production - PullRequest
45 голосов
/ 28 сентября 2011

Я прошу прощения, если это очевидно или просто, я просмотрел большое количество уроков по git / github и прочитал другие статьи, но я хочу убедиться, что я делаю правильно.

Iхочу включить VC (по понятным причинам) в мою команду разработчиков и процесс.

Текущий процесс разработки (с использованием Dreamweaver):
* Получение заявки (или рабочего задания)
* Загрузка файла в Developmentсервер
* Внести изменения в файл
* Загрузить файл обратно на сервер разработки
* Проверенные / проверенные изменения
* Отправить на рабочий сервер


Я пытаюсьвыяснить, как сделать наш новый процесс разработки с использованием Git.

Я переключаюсь на PHPStorm (который является реальной PHP IDE с прямой интеграцией с Git).

Будет ли это что-то вроде

  • Получить билет (или заказ на работу)
  • Оформить заказ / Обновить / Скачать файл (ы)
  • Изменить файлы
  • Загрузить файл (которыйЯ полагаю, это также текущая работаing directory ...?)
  • В конце дня выполните коммит
  • Пусть скрипт сборки отправляет данные на тестовый сервер (ночная сборка)

Или было бы лучше сделать что-то вроде

  • Получить билет (или заказ на работу)
  • Оформить заказ / Обновить / Скачать файл (ы)
  • Изменить файлы
  • Загрузить файл / зафиксировать
  • Сценарий сборки отправляет данные на сервер тестирования (ночная сборка)

Или есть другой способ?Возникли проблемы с пониманием того, каким будет оптимальный поток?

Любая помощь будет принята с благодарностью.


Редактировать

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

Если нет, как вы справляетесь с этим?7 или около того ветки с ними в сети?Вы загружаете файлы FTP или используете Git Hooks для их автоматического обновления?

Обновление 07/26/2012

После долгой успешной работы с Git яМы с большим успехом следили за этой моделью ветвления: Успешная модель ветвления Git

Ответ на этот вопрос был положительным - обязательно должна быть локальная версия сервера.

1 Ответ

67 голосов
/ 28 сентября 2011

Если у вас есть работающий сервер и сервер разработки, я бы сделал что-то в этом роде.

Прежде чем начать цикл разработки, я бы по крайней мере имел две ветви:

  1. Мастер - сервер разработки работает в этой ветке
  2. Стабильный - на этой ветке работает живой сервер.

Таким образом, если разработчик получит билет или рабочее задание, он / она выполнит следующие действия:

  1. мастер происхождения git pull
  2. git branch featureBranch (называемый идентификатором заявки или хорошим описанием рабочего задания)
  3. git checkout featureBranch
  4. Внесите изменения, которые позволят выполнить желаемое изменение. Совершайте так часто, как это необходимо. Сделайте это, потому что вы создадите ценную историю. Например, вы можете попробовать подход к проблеме, и если она не работает, откажитесь от нее. Если через день вы видите свет и хотите повторно применить решение, оно в вашей истории!
  5. Когда функция полностью разработана и протестирована на месте, проверьте мастер.
  6. git merge featureBranch
  7. git push origin master
  8. Протестируйте внесенные изменения на сервере разработки. Это момент для запуска каждого теста, о котором вы только можете подумать.
  9. Если все работает, объедините функцию или исправьте в стабильную ветку. Теперь изменения доступны для ваших клиентов.

Получение кода на сервере

Обновление серверов не должно быть проблемой. По сути, я бы настроил их как пользователей, как разработчиков. В моей компании мы настроили серверы только для чтения. По сути, это означает, что серверы никогда не могут выдвигать что-либо, но могут всегда вытягивать Настроить это не так просто, так что вы также можете создать простой веб-интерфейс, который позволяет только git pull. Если вы можете помешать вашим разработчикам делать что-то на живых реализациях, вы в безопасности:)

[EDIT]

В ответ на последние вопросы, заданные в комментариях к этой реакции:

Я не знаю, правильно ли я понимаю ваш вопрос, но в основном (немного упростил) я так и сделал бы, если бы я был в вашей обуви. Example setup

Машина тестирования (или webroot, который действует как реализация тестирования) имеет исходный код, основанный на git-репозитории с проверенной веткой master. При создании этого хранилища вы можете даже удалить все другие ссылки на все остальные ветви, так что вы будете уверены, что не сможете оформить неправильную ветку в этом хранилище. Так что в основном на тестовой машине есть Git-репозиторий с только главной веткой, которая извлечена.

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

Фактическое кодирование

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

Если кажется, что все в порядке, изменения объединяются из функциональной ветви в master и отправляются на ваш «git machine». "твой github" так сказать. Теперь тестирование может привести к изменениям, поэтому QA может выполнить каждый необходимый тест. Если они решат, что все в порядке, разработчик может объединить изменения из основного в стабильный и снова нажать.

Все, что осталось сейчас, это тянуть с ваших живых машин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...