Download - Системы контроля версий
Системы контроля версий
Цели семинара
• Получить знания о 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: [email protected]
Спасибо за внимание