Skip to content
alex-ac edited this page Oct 21, 2014 · 3 revisions

Здесь описан процесс работы с трекером и системой контроля версий.

Трекер

Мы используем трекер http://team.technoworks.ru/ для постановки задач. Любой код должен быть связан с какой-либо задачей. Задача ассигнится на одного конкретного человека, который ее будет делать. Если не понятно, на кого поставить задачу, можно аставить её ничейной, значит в ближайшее время нужно будет обсудить её и решить, кто будет её делать.

Workpackage

Для упрощения нам жизни, мы используем систему воркпэккэджей. Что это значит: каждая задача бьется на n частей, каждая из которых делается отдельным wp. Каждый wp делается в отдельной ветке git репозитория. Предполагается, что над каждой веткой работает только один человек и может творить с ней любой беспредел (git commit --amend, git rebase, git reset --hard, git push -f, etc.), и это никак не затронет остальных людей, работающих над проектом. Также предполагается, что каждый workpackage делается не больше недели.

Что это дает:

  • Свободу действий в рамках своей ветки;
  • Короткие итерации работы над проектом;
  • Все работают над боле-менее свежим состоянием исходного кода;
  • Все задачи изолированы друг от друга;
  • Все изменения проходят через ревью.

Итак, каждый wp живет в отдельной ветке под именем wp/${номер задачи}/${номер wp в рамках этой задачи}. Никто ничего не коммитит напрямую в мастер. Никто не мерджит свои ветки в мастер самостоятельно. После того, как работа над wp закончена, ветка заливается в основной репозиторий и создается пулл-реквест.

Pull-request

Пулл-реквесты — основной способо влияния кода в основную ветку проекта. созданный пулл-реквест должен пройти ревью. Ревьювер должен оценить решение задачи, может дать комментарий по тому, как можно было сделать лучше и почему, а также указать на ошибки в стиле или логике. Ревьювер не является истиной в последней инстанции. Если ревьювер не прав, нужно объяснить почему. Ревью — это инструмент для обмена опытом между членами команды. Любые изменения в ветке при этом делает только автор изменений. Ревьювер не должен все переделывать, потому что он считает, что так правильнее. Ревьювером может быть любой.

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

HowTo/FAQ

Краткая последовательность действий разработчика при работе над задачей. В тексте ниже N — номер задачи, M — номер workpackage.

Q. Итак, на меня повесили задачу CAROLINE-N, и я готов начать ее делать, что я делаю?

A. Первым делом нужно открыть задачу на гитхабе, внимательно прочитать и понять, что требуется сделать. Поставить метку "In Progress" (метки находятся справа на странице задачи). После этого можно нужно открыть командную строку, перейти в директорию с кодом проекта, подтянуть свежие изменения и создать ветку. M будет равен единице.

git fetch origin && git checkout -f origin/master -B wp/CAROLINE-N/M

Теперь можно работать над кодом.

Q. Я думаю, что задача решена, что делать дальше?

A. Нужно закоммитить изменения.

git add <список файлов, в которых мы что-то поменяли, через пробелы>
git commit -m "CAROLINE-N: <комментарий к данным изменениям>."

Стоит обратить внимание, что в момент git commit проверяется стиль файлов, стоит убедиться, что код действительно был закоммичен, иначе придется исправить ошибки и повторить исполнение этих двух комманд.

Q. Я закоммитил изменения, что теперь?

A. Нужно загрузить изменения на гитхаб и создать пулл-реквест.

git push -u origin wp/CAROLINE-N/M

Идем на страницу https://github.com/it-workshop/caroline/pulls, и жмем на кнопочку "New pull request", выбираем свою ветку и создаем пулл-реквест. Также стоит зайти на страницу своей задачи, убрать метку "In Progress" и добавить метку "On Review".

Q. Все готово?

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

Clone this wiki locally