12
Работа с системой управления версиями при Agile разработке Малышкин Фёдор ([email protected]) 25 апреля 2008

Работа с системой управления версиями при Agile разработке

Embed Size (px)

DESCRIPTION

Работа с системой управления версиями при Agile разработке

Citation preview

Page 1: Работа с системой управления версиями при Agile разработке

Работа с системой управления версиями при Agile разработке

Малышкин Фёдор ([email protected])

25 апреля 2008

Page 2: Работа с системой управления версиями при Agile разработке

Страница 2

Использование SCM

История использования SCM (Software Configuration Management) , в нашей фирме, имеет очень глубокие корни, но очень простые принципы: сохраняйся и обновляйся чаще.

В большинстве случаев оно используется как: Хранилище исходных текстов и ресурсов программ Средство обмена исходными текстами (синхронизации работы)

Page 3: Работа с системой управления версиями при Agile разработке

Страница 3

Проблемы

«Нерабочие» версии проекта в репозитарии («Я тут поломал, поэтому показать не могу…»)

Конфликты при «коммите»

Page 4: Работа с системой управления версиями при Agile разработке

Страница 4

Цели презентации

Отказоустойчивость Конфликты в коде могут быть обнаружены как можно раньше Исправление маленьких проблем (возможно чаще), чем больших

(возможно реже) Всегда рабочее состояние

Даже после большой неудачной работы в репозитарии есть рабочая

копия чего-то Простота

Все члены команды используют одну и ту же схему изо дня в день, как

следствие все процедуры ясны и понятны

Page 5: Работа с системой управления версиями при Agile разработке

Страница 5

Диаграмма

Trunk = “Готово”Никакого мусора!!!

Группа #1

Группа #2

День 4День 3День 2День 1 День 5

Каждая группа имеет

свою ветку

«Сливать» из trunk

ежедневно (или чаще)

Опубликовывать работу каждый раз, когда работа

готова и проверена

Разрешать конфликты, сразу, как только они

появляются

Релиз в конце каждого спринта

0.7

Page 6: Работа с системой управления версиями при Agile разработке

Страница 6

Проблемы применения схемы

Несколько задач реализуются в ветке параллельно. Другая команда также производит публикацию в trunk.

Ожидание пока параллельная задача будет закончена или пока другая группа применит Ваши изменения, не может рассматриваться как решение. Это будет подобно снежному кому – поэтому необходимо выработать некоторые правила.

Page 7: Работа с системой управления версиями при Agile разработке

Страница 7

Несколько задач реализуются в ветке параллельно. Варианты.

Не делать задач параллельно в рамках одно группы. Пытаться фокусироваться на одной задаче.

Если кто-то собирается начать параллельную работу – подождать пока предыдущая задача будет опубликована. Либо создать новую ветку для неё (если нравится жонглировать ветками).

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

Page 8: Работа с системой управления версиями при Agile разработке

Страница 8

Правила

Кто бы не трогал trunk – он ответственен за работоспособность основной ветви. Включая весь предыдущий функционал!

Синхронизируйте вашу ветвь с основной периодически ( = как можно чаще)

Page 9: Работа с системой управления версиями при Agile разработке

Страница 9

Другая команда также производит публикацию в trunk. Правила.

Синхронизируйте вашу ветвь с основной ежедневно (как минимум).

Сразу разрешайте проблемы на вашей рабочей ветви. Объединяйте Вашу рабочую ветвь с основной на

периодической основе. Например по окончании задачи (разумеется нерабочий или «ломающий» код выкладывать нельзя). Не ждите окончания спринта.

Тот кто первый объединил – выиграл. В случае возникновения конфликтов при слиянии – он их исправлять уже не будет. Будет тот, кто производил слияние последним.

Page 10: Работа с системой управления версиями при Agile разработке

Страница 10

Диаграмма

Trunk = “Готово”Никакого мусора!!!

Группа #1

Группа #2

День 4День 3День 2День 1 День 5

Каждая группа имеет

свою ветку

«Сливать» из trunk

ежедневно (или чаще)

Опубликовывать работу каждый раз, когда работа

готова и проверена

Разрешать конфликты, сразу, как только они

появляются

Релиз в конце каждого спринта

0.7

Page 11: Работа с системой управления версиями при Agile разработке

Страница 11

Дополнительные возможности

Ветви версий с различным функционалом Неизменяемы версии (tags ветка)

Page 12: Работа с системой управления версиями при Agile разработке

Страница 12

Ресурсы

«Управление версиями в Subversion» - отличная книга по svn (есть в электронном виде, на русском)