26
Системы контроля версий

Системы контроля версий

Embed Size (px)

DESCRIPTION

Исходный код проекта для проведения практических занятий - https://www.dropbox.com/s/pgojksvmzg89w20/calc.zip

Citation preview

Page 1: Системы контроля версий

Системы контроля версий

Page 2: Системы контроля версий

Цели семинара

• Получить знания о VCS

• Приобрести практические навыки работы с Mercurial Hg

Page 3: Системы контроля версий

Резервные копии

Page 4: Системы контроля версий

Определение VCS

Система управления версиями (от англ. Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.

Page 5: Системы контроля версий

Какие задачи решает VCS

• Архивация и восстановление – ведется история изменения файлов с возможностью обновления до указанного состояния

• Ведение истории – при каждом изменении пользователи вносят комментарии, где описывают для чего были внесены изменения

• Создание веток (альтернативные реализации) – VCS позволяет создавать разные варианты одного документа, т. н. ветки, с общей историей изменений до точки ветвления и с разными — после неё.

Page 6: Системы контроля версий

Типы CVS

•Централизованные

•Децентрализованные

Page 7: Системы контроля версий

Централизованные

Page 8: Системы контроля версий

Децентрализованные

Page 9: Системы контроля версий

Ветвление

Page 10: Системы контроля версий

Слияние

Page 11: Системы контроля версий

Конфликты

Page 12: Системы контроля версий

Работа с ветками

Делать мелкие исправления в проекте можно путём непосредственной правки рабочей копии и последующей фиксацией изменений прямо в главной ветви (стволе) на сервере.

Однако при выполнении сколько-нибудь значительных по объёму работ такой порядок становится неудобным: отсутствие фиксации промежуточных изменений на сервере не позволяет работать над чем-либо в групповом режиме, кроме того, повышается риск потери изменений при локальных авариях и теряется возможность анализа и возврата к предыдущим вариантам кода в пределах данной работы.

Поэтому для таких изменений обычной практикой является создание ветвей (branch), то есть «отпочковывания» от ствола в какой-то версии нового варианта проекта или его части, разработка в котором ведётся параллельно с изменениями в основной версии. Ветвь создаётся специальной командой.

Page 13: Системы контроля версий

Работа с ветками

Логинr1

Page 14: Системы контроля версий

Работа с ветками

Логинr1 Формаr2

Page 15: Системы контроля версий

Выпуск релиза в ветке

Логинr1 Формаr2

Релизv1

Page 16: Системы контроля версий

Продолжение разработки

Логинr1 Формаr2 Закачкаr3

Релизv1

Page 17: Системы контроля версий

Продолжение разработки

Логинr1 Формаr2 Закачкаr3 Настройкаr4

Релизv1

Page 18: Системы контроля версий

Исправление ошибок в релизе

Логинr1 Формаr2 Закачкаr3 Настройкаr4

Релизv1 ИсправленияV1.1

Page 19: Системы контроля версий

Внесение исправлений в корень

Логинr1 Формаr2 Закачкаr3 Настройкаr4 Исправленияr5

Релизv1 Исправленияv2

Page 20: Системы контроля версий

Наш словарь

Базовые термины• Репозиторий• Ревизия• Коммит, описание коммита• Ветки, слияния, конфликты

Page 21: Системы контроля версий

Ежедневный цикл работы с VCS• Обновление рабочей копии По мере внесения изменений в основную версию проекта рабочая копия на компьютере разработчика стареет: расхождение её с основной версией проекта увеличивается. Это повышает риск возникновения конфликтных изменений. Поэтому удобно поддерживать рабочую копию в состоянии, максимально близком к текущей основной версии, для чего разработчик выполняет операцию обновления рабочей копии насколько возможно часто.

• Модификация проекта Разработчик модифицирует проект, изменяя входящие в него файлы в рабочей копии в соответствии с проектным заданием. Эта работа производится локально и не требует обращений к серверу VCS.

• Фиксация изменений в локальном репозиторииЗавершив очередной этап работы над заданием, разработчик фиксирует (commit) свои изменения в локальном репозитории.

• Отправка изменений в центральный репозиторийДля того чтобы выполненные изменения стали доступны другим разработчикам необходимо произвести синхронизацию локального и центрального репозитория – отправить изменения из локального репозитория в центральный.

Page 22: Системы контроля версий

Подготовка к практике

• Установлен Tortoise Hg• Создана переменная среды «hgencoding=utf-8»• Установлена WinCC OA• Установлен браузер Chrome• Установлен редактор Sublime

Page 23: Системы контроля версий

Практика

Командная разработка приложения «Калькулятор»

Задачи:• Клонировать репозиторий• Добавить в проект файл для реализации функции• Sum(a,b); Mult(a,b); Sub(a,b); Div(a,b); Power3(a); Power4(a);

• Получить изменения из центрального репозитория• Обновить локальный репозиторий до последней версии• Залить свои изменения в центральны репозиторий• Моделирование и разрешение конфликтов• Создание ветки, слияние веток

Page 24: Системы контроля версий

Регламент работы с VCS

• Выполняем частые commit

• Каждый commit сопровождаем подробным описанием изменений

• После любого commit код в главной ветке должен оставаться в рабочем состояние

• При необходимости длительной разработки нового функционала – «уходим в ветку»

Page 25: Системы контроля версий

Материалы

Статьи Джоэла Спольски• Основы Mercurial - http://habrahabr.ru/post/108658/• Привыкаем работать в команде - http://habrahabr.ru/post/108904/• Исправляем ошибки - http://habrahabr.ru/post/109074/• Процесс слияния - http://habrahabr.ru/blogs/development_tools/109203/• Архитектура репозиториев - http://habrahabr.ru/post/109428/

Системы контроля версий, статьи команды Yandex• http://tech.yandex.ru/education/shri/simf-2013/talks/671/

Page 26: Системы контроля версий

ГК СМС-АвтоматизацияПрезентацию подготовил Трешников П.В.email: [email protected]

Спасибо за внимание