17
Курс: «Мануальное тестирование ПО» Системы контроля версий. Что такое контроль версий и для чего он необходим. Системы контроля версий CVS, SVN, GIT, Mercurial.

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

Embed Size (px)

Citation preview

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

Курс: «Мануальное тестирование ПО»

Системы контроля версий. Что такое контроль версий и для чего он необходим. Системы контроля версий CVS, SVN, GIT, Mercurial.

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

Что такое VCS? Система управления версиями ( Version

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

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

Какие задачи решает VCS?Архивации и восстановления - ведётся

история изменения файлов с возможностью обновления до указанного состояния;

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

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

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

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

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

Что нам дает использование VCS?

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

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

Сохраняя файл в VCS, не нужно думать о том, что кто-то, работающий с этим же файлом, пересохранит и удалит изменения.

Для разработчиков программных продуктов использование системы также позволяет производить принятие/отклонение изменений, сделанных одним из разработчиков.

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

Классификация VCS Централизованные / распределенные- в

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

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

Для текстовых данных/для бинарных данных – для VCS для текстовых данных очень важна поддержка слияния изменений, для VCS с бинарными данными важна возможность блокировки.

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

Централизованные системы управления версиями

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

Распределённые системы управления версиями

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

Ежедневный цикл работы.

Обновление рабочей копии. Разработчик выполняет операцию обновления

рабочей копии (update) насколько возможно. Модификация проекта. Разработчик локально модифицирует проект,

изменяя входящие в него файлы в рабочей копии.

Фиксация изменений. Завершив очередной этап работы над

заданием, разработчик фиксирует (commit) свои изменения, передавая их на сервер. VSC может требовать от разработчика перед фиксацией выполнить обновление.

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

ВетвлениеВетвь(branch ) — направление разработки,

независимое от других.Ветвь представляет собой копию части (как

правило, одного каталога) хранилища, в которую можно вносить свои изменения, не влияющие на другие ветви.

Документы в разных ветвях имеют одинаковую историю до точки ветвления и разные — после неё.

Изменения из одной ветви можно переносить в другую.

 Ствол(trunk, mainline, master) — основная ветвь разработки проекта.

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

Ветвление

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

Слияние

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

Терминология working copy - рабочая (локальная) копия документов. repository, depot - хранилище документов — место, где система

управления версиями хранит все документы вместе с историей их изменения и другой служебной информацией.

revision -  версия документа. Новые изменения(changeset) создают новую ревизию репозитория.

check-in, commit, submit - фиксация изменений. check-out, clone - извлечение документа из хранилища и

создание рабочей копии. update, sync - синхронизация рабочей копии до некоторого

заданного состояния хранилища ( в т.ч. и к более старому состоянию ,чем текущее).

merge, integration - cлияние — объединение независимых изменений в единую версию документа.

conflict  - конфликтная ситуация, когда несколько пользователей сделали изменения одного и того же участка документа.

head - самая свежая версия (revision ) в хранилище.

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

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

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

Краткое описание популярных VCS

Git (http://git-scm.com/) - распределенная система контроля версий, разработанная Линусом Торвальдсом. Изначально Git предназначалась для использования в процессе разработки ядра Linux, но позже стала использоваться и во многих других проектах — таких, как, например, X.org и Ruby on Rails, Drupal. На данный момент Git является самой быстрой распределенной системой, использующей самое компактное хранилище ревизий.

Mercurial (http://www.selenic.com/mercurial/) - распределенная система, написанная на языке Python с несколькими расширениями на C. Из использующих Mercurial проектов можно назвать, такие, как, Mozilla и MoinMoin.

Bazaar (http://bazaar-vcs.org/) - система разработка которой поддерживается компанией Canonical — известной своими дистрибутивом Ubuntu и сайтом https://launchpad.net/. Система в основном написана на языке Python и используется такими проектами, как, например, MySQL.

Monotone (http://monotone.ca/) - система написанная на C++ и использующая SQLite как хранилище ревизий.

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

Бесплатные VCS серверы

Есть много серверов, которые представляют открытые репозитории для совместной работы:

https://sourceforge.net/ -SVN, GIT, Mercurial, Bazaar, CVN репозитории.

https://github.com/- GIT,SVN репозитории.

https://bitbucket.org/ - GIT и Mercurial репозитории

и другие…

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

ВОПРОСЫ

Thank You!