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

Preview:

DESCRIPTION

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

Citation preview

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

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

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

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

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

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

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

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

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

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

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

Типы CVS

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

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

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

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

Ветвление

Слияние

Конфликты

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

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

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

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

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

Логинr1

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

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

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

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

Релизv1

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

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

Релизv1

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

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

Релизv1

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

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

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

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

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

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

Наш словарь

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

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

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

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

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

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

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

Практика

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

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

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

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

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

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

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

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

Материалы

Статьи Джоэла Спольски• Основы 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/

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

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

Recommended