31
ндекс Maintainer» кода в большом проекте Сергей Сергеев руководитель группы разработки интерфейсов Я.Субботник, Санкт-Петербург, 15 июня 2013 года Я «

Сергей Сергеев — Maintainer кода в большом проекте

  • Upload
    yandex

  • View
    782

  • Download
    3

Embed Size (px)

DESCRIPTION

Команда разработки интерфейсов поиска у нас большая и распределённая. Maintainer кода — кто он в нашей команде? Какие задачи решает? Как использует Git и GitHub для решения этих задач? Об этом рассказывается в докладе.

Citation preview

Page 1: Сергей Сергеев — Maintainer кода в большом проекте

ндекс

Maintainer» кода в большомпроекте

Сергей Сергеевруководитель группы разработки интерфейсов

Я.Субботник, Санкт-Петербург, 15 июня 2013 года

Я

«

Page 2: Сергей Сергеев — Maintainer кода в большом проекте

И было всё просто

← develop

← testing

← release

2

Page 3: Сергей Сергеев — Maintainer кода в большом проекте

И стало чуть сложнее

← hotfix, V0.3

← V1

← V2

← testing

← rel-V2

← testing-V1

← rel-V1, HEAD

3

Page 4: Сергей Сергеев — Maintainer кода в большом проекте

И стало чуть сложнее

4

Page 5: Сергей Сергеев — Maintainer кода в большом проекте

OpenSource

Page 6: Сергей Сергеев — Maintainer кода в большом проекте

Требования к процедурам:

— формирования патчей

— оформления изменений

— предложения правок

6

Page 7: Сергей Сергеев — Maintainer кода в большом проекте

Закрытый»проект

«

Page 8: Сергей Сергеев — Maintainer кода в большом проекте

Особенности:

— «упрощённый» рабочий процесс

— нет внешних разработчиков

— нацеленость на быстрое решение продуктовой задачи

8

Page 9: Сергей Сергеев — Maintainer кода в большом проекте

SCM —source codemanagement

Page 10: Сергей Сергеев — Maintainer кода в большом проекте

Git

Git — the stupid content tracker

Linus Torvalds“10

Page 11: Сергей Сергеев — Maintainer кода в большом проекте

Регламент работ

Page 12: Сергей Сергеев — Maintainer кода в большом проекте

А зачем нам регламент?

— ЗНАЕМ! что происходит

— понимаем когда релизим

— понимаем где брать свежий код

— понимаем куда изменения «вливать» и откуда «отпочковывать»

12

Page 13: Сергей Сергеев — Maintainer кода в большом проекте

Git-Flow

Page 14: Сергей Сергеев — Maintainer кода в большом проекте
Page 15: Сергей Сергеев — Maintainer кода в большом проекте

Git-Flow — наш выбор

— как вести разработку и не бояться «закопаться» в процедуре

формирования релиза

— как и когда формировать релиз

— как внешнему (для проекта) пользователю понять где брать

стабильный релиз и релиз более старой версии

— как делать hotfix'ы тогда, когда основная ветвь разработки ушла уже

далеко

15

Page 16: Сергей Сергеев — Maintainer кода в большом проекте

GitHub

Page 17: Сергей Сергеев — Maintainer кода в большом проекте

GitHub и pull-request'ы

— pull-request для ревью

— один pull-request на одну задачу

— указываем id задачи

— причёсываем историю до подачи pull-request'а

17

Page 18: Сергей Сергеев — Maintainer кода в большом проекте

История

Page 19: Сергей Сергеев — Maintainer кода в большом проекте

Бывает и такое

19

Page 20: Сергей Сергеев — Maintainer кода в большом проекте

Мы же получаем

20

Page 21: Сергей Сергеев — Maintainer кода в большом проекте

Журнал Капитана

abc2390 багфикс 2 [captain]

eec5401 багфикс [captain]

53aeex5 добавил файлы [captain]

04012ea минорные изменения [captain]

cade034 убрал ненужное [captain]

21

Page 22: Сергей Сергеев — Maintainer кода в большом проекте

git rebase --interactive

reword cade034 убрал ненужное

reword 04012ea минорные изменения

reword 53aeex5 добавил файлы

fixup eec5401 багфикс

reword abc2390 багфикс 2

22

Page 23: Сергей Сергеев — Maintainer кода в большом проекте

Журнал Maintainer'а

eac0403 slider: убрать рывки в анимации [gurugray]

35feea5 core: добавить обработку команды «save» [gurugray]

14512aa code-style: заменить табуляции на пробелы [gurugray]

aaee154 main-page: убрать блок новостей [gurugray]

23

Page 24: Сергей Сергеев — Maintainer кода в большом проекте

git cherry-pick (reset, rebase)

|| * dc1a212 карты: убрать табличную раскладку| * af06df3 добавить конфиг для сборки| * 7462c2a реализовать базовые блоки| * 91e3997 .gitignore: добавить собраные файлы|/* 46c9ce8 TeamCity build autocommit

24

Page 25: Сергей Сергеев — Maintainer кода в большом проекте

git cherry-pick (reset, rebase)

|| * dc1a212 карты: убрать табличную раскладку|/| * af06df3 добавить конфиг для сборки| * 7462c2a реализовать базовые блоки| * 91e3997 .gitignore: добавить собраные файлы|/* 46c9ce8 TeamCity build autocommit

25

Page 26: Сергей Сергеев — Maintainer кода в большом проекте

git merge --no-ff

* 78c8724 Merge pull request #1|\| * dc1a212 карты: убрать табличную раскладку|/* 44eebab view: хендлер для тестовой страницы|\| * af06df3 добавить конфиг для сборки| * 7462c2a реализовать базовые блоки| * 91e3997 .gitignore: добавить собраные файлы|/* 46c9ce8 TeamCity build autocommit

26

Page 27: Сергей Сергеев — Maintainer кода в большом проекте

Maintainer

Page 28: Сергей Сергеев — Maintainer кода в большом проекте

В нашей команде отвечает за:

— сохранение общей структуры проекта (Maintainer)

— лёгкое внесение изменений в код (Maintainer)

— релизный цикл (Release engineer)

— сопровождение истории проекта (Release engineer)

28

Page 29: Сергей Сергеев — Maintainer кода в большом проекте
Page 30: Сергей Сергеев — Maintainer кода в большом проекте

Вопросы?

Page 31: Сергей Сергеев — Maintainer кода в большом проекте

Cергей Сергеевруководитель группы разработки интерфейсов

[email protected]

@gurugray

Я