27
svn → git подводные грабли

DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Embed Size (px)

Citation preview

Page 1: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

svn → git

подводные грабли

Page 2: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Андрей Хитрин

Разработчик

[email protected]

Константин Беклемишев

Руководитель группы

[email protected]

Naumen Phone

Page 3: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

• Это 10 лет разработки на C++, Python и

Java

• Гибкая масштабируемая архитектура

• Более 20-и серверных компонент

• Три интерфейса пользователя

• Две команды разработки

Что такое Naumen Phone?

Page 4: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

• Это 10 лет разработки на C++, Python и

Java

• Гибкая масштабируемая архитектура

• Более 20-и серверных компонент

• Три интерфейса пользователя

• Две команды разработки

...и мы были счастливы с svn ;)

Что такое Naumen Phone?

Page 5: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Глобальные цели

Захват и полное

доминирование в

регионе APAC!

Следствие: Cмещение

фокуса с проектной

деятельности на

релизный цикл

Page 6: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Наследие: как оно было?

Welcome to SVN hell !

• Множество веток

• Они не синхронизируются

• Актуальна только одна

• Нет единства :(

Page 7: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Наследие: как оно было?

Партизаны начинают переходить на git и hg

Page 8: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Что мы хотим?

Версии

Удобный Code Review

Стабилизацию и Тестирование

Page 9: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

• скорость работы

• удобное ветвление и слияние

• отдельные ветки для code review

• копирование коммитов

• эффективный поиск

• bisect

• корректировка истории

• гибкий workflow • он популярен!

Почему git?

Page 10: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

• скорость работы

• удобное ветвление и слияние

• отдельные ветки для code review

• копирование коммитов

• эффективный поиск

• bisect

• корректировка истории

• гибкий workflow • он популярен!

Почему git?

Но его надо изучать!

Page 11: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Этапы переезда svn → git

• Составление git-workflow (+)

• Самостоятельное изучение githowto (-)

• Тестовый экспорт из svn в git(разбили на

несколько git-репозиториев)

Page 12: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Этапы переезда svn → git

• Адаптация систем сборки

• Полный переезд

• Доклад о работе с git (-)

• Мастер-класс по работе с git (+)

• Хуки, подушки и перины

Page 13: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Что содержит git workflow?

• Правила работы над задачей

• Правила ведения коммитов

• Подготовка к работе

• Основные операции

• Стандартные процедуры работы

Page 14: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

git-workflow: схема репозитория

master - основная ветка разработки

stable-1.5.0 - стабильная версия

Page 15: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

git-svn + файл авторов

Импорт

Page 16: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Контроль доступа

Как контролировать доступ к репозиторию?

Page 17: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Контроль доступа

Может, gitosis?

Page 18: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Контроль доступа

Какие ещё есть решения?

• GitoLitehttps://github.com/sitaramc/gitolite

• GitLab

HQhttps://github.com/gitlabhq/gitlabhq

• GitHub Enterprise

(всего $5000 в год!)

Page 19: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Контроль доступа

Старый добрый ssh+ldap!

Page 20: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Captain Hook

Page 21: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Captain Hook

Поганится владелец :)

Page 22: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Captain Hook

Лес может быстро зарасти

Page 23: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Captain Hook

Добавили сторожевой хук

Page 24: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Результаты

В гр. разработки NPO переезд удался! :)

В гр. разрабоки NP еще многое предстоит

сделать.

Page 25: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Что еще необходимо сделать?

• Покомпонентное дробление git-репозитория NP

• Новая система сборки NP

• Redmine 1.4+ (multi-repo на каждый проект)

Page 26: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей

Выводы

• надо много обучать

• важно понимать внутреннюю модель

• очень помогает визуализация (gitk)

• учите shell-команды git - в них самое

вкусное

• используйте хуки

• спрашивайте и узнавайте, в чём

проблемы

Page 27: DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Константин Беклемишев, Андрей