Руководство участника сообщества

Стратегия ветвления для совместной разработки в GitHub

Для того, чтобы облегчить совместную разработку и управление исходными кодами MODX на GitHub и была принята четкая и последовательная стратегия ветвления. Эта стратегия заключается в поддержании двух постоянных веток в каждом главной репозитории MODX: master, которая предоставляет код в пригодном для боевого применения виде, и develop, которая содержит код, который будет включен в следующий релиз. Однако существует целый ряд важных поддерживаемых веток, который будут жить только определенное время, включая ветки для фич, ветки быстрых исправлений мастера и особенные релизные ветки. Хотя они и обычные git-ветки, они существенно отличаются по тому, как они будут использоваться в процессе разработки.

Постоянные ветки

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

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

Поддержка веток

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

  • Ветки фич (Feature branches) - это ветки, с которыми будут работать разработчики из сообщества
  • Ветки релизов
  • Ветки быстрых исправлений (Hotfix branches)

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

Работа с вашим форком на GitHub

MODX разработчики должны работать напрямую со своими личными форками на GitHub. Здесь предлагается способ подготовить свой локальный репозиторий разработчика для разработки любого MODX проекта:

<code>$ git clone git@github.com:YourGitUsername/revolution.git
$ cd revolution
$ git remote add upstream -f http://github.com/modxcms/revolution.git

Это устанавливает ваш форк в качестве стандартного удаленного репозитория origin и добавляет "священный" репозиторий под именем upstream. Вы можете добавить ссылки на форки других разработчиков и назвать их так, чтобы вы могли отслеживать каждого из них.

Пора идти вперед и создавать локальные ветки для постоянных веток из вашего форка, который origin:

<code>$ git checkout -b master origin/master
Switched to a new branch "master"
$ git checkout -b develop origin/develop
Switched to a new branch "develop"

Чтобы держать свои локальные ветки свежими относительно develop and master, обновляйтесь с репозитория upstream:

<code>$ git fetch upstream
$ git checkout develop
Switched to branch "develop"
$ git merge --ff-only upstream/develop
$ git checkout master
Switched to branch "master"
$ git merge --ff-only upstream/master
$ git push origin develop master

Стоит отметить, что push в осноном для "показать" и не стоит пушить в постоянные ветки, даже в своих форках. Другими словами, имена веток develop и master в вашем форке должны всегда соответствовать именам веток в upstream. Ожидается, что все исправления будут отправлены в ветках для фич или быстрых исправлений, происходящих от соответствующей постоянной ветки или ветка с исправлением ошибки, происходящая от ветки релиза в upstreamрепозитории.

Также обратите внимание на флаг --ff-only, который гарантирует fast-forward слияние (в случае, когда вы сделали коммит в основную ветку не осознавая этого).

Важно




Пожалуйста, удостоверьтесь в том, что у вас установлена настройка autocrlf перед тем, как коммитить в ваш форк. Смотрите http://help.github.com/dealing-with-lineendings/, чтобы определить, какие настройки вам нужны. Это зависит от платформы, на которой вы работаете.

Ветки для фич (Feature Branches)

  • Может ветвиться от: develop
  • Соглашения именования: что угодно, кроме master, develop, release-, или hotfix-

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

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

Создание ветки для фичи

Когда начинаете работу над новой функцией, сделайте ветку от ветки develop.

<code>$ git checkout -b myfeature develop
Switched to a new branch "myfeature"

Отправка pull request для завершенной функции

После того, как вы завершили разработку функции в ветке, вы должны сначала убедиться, что ваша задача хорошо работает с последними обновлениями из ветки develop:

<code>$ git fetch upstream
$ git checkout develop
Switched to branch {{develop}}
$ git merge --ff-only upstream/develop
$ git checkout myfeature
Switched to branch "myfeature"
$ git rebase develop

Это позволит интегратору легче включить вашу работу в проект и без разбора раконфликтов.

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

<code>$ git push origin myfeature:myfeature

И теперь вы готовы слать pull request для вашей тематической ветки.

Ветки для ошибок (Bug Branches)

Если в багтрекерe MODX есть ошибка, которую вы хотите исправить, следуйте вот этому простому процессу.

Сначала форкните MODX репозиторий на GitHub, затем склонируйте ваш форк (смотрите ниже).

Вы можете начать с чистого листа, если у вас уже есть локальная ветка релиза. Например, если у вас уже есть ветка "release-2.2", вы можете удалить ее локально и начать заново:

<code>git branch -D release-2.2

Далее вы должны переключиться на свежую ветку из upstream:

<code>git fetch upstream
git checkout -b release-2.2 upstream/release-2.2

Перед тем, как начать писать код для вашего фикса, создайте ветку, посвященную вашей задаче (где XXXX - номер бага):

<code>git checkout -b bug-XXXX release-2.2

Теперь вы готовы вносить ваши изменения. Исправляйте этот баг!

После того, как ошибка исправлена, вы можете закомитить свои изменения и сделать push вашей ветки с исправлением в ваш форк:

<code>git commit .
git push origin bug-XXXX

Затем вы будете готовы отправить ваш pull request через GitHub.

Войдите в ваш аккаунт на GitHub, найдите ваш MODX форк, затем нашмите кнопку вверху, на которой написано "Pull Request".

Удостоверьтесь, что вы выбрали "основную ветку" - вы хотите отправить pull request в ветку, от которой вы начинали работу.

  • Реклама

  • Недавние публикации

  • Недавние комментарии

© 2011 — 2014 MODX Беларусь
По всем вопросам обращаться в компанию Alroniks Experts