Version Control Systems

реклама
Системы контроля версий
(Version Control Systems)
МАИ, каф. 806,
Гаврилов Евгений (eugavrilov at gmail.com)
Проблемы
Работать вместе над одним кодом
• Решение: единый репозиторий
Хранить историю изменений
• Решение: хранить все изменения файлов в репозитории
Разрабатывать параллельные версии программы
• Решение: ветки и теги репозитория
Цикл работы с VCS (Subversion)
0. Checkout: cоздание локальной копии [1 раз]
Репозиторий
1. Редактирование файлов локальной копии
2. Update: обновление локальной копии из репозитория
Репозиторий
2.1. Разрешение конфликтов
(если в репозитории изменился тот же файл)
3. Commit: фиксирование изменений в репозиторий
Репозиторий
Одновременный доступ
• Пессимистическая блокировка
– MS Visual Source Safe, Subversion Locks
• Оптимистическая блокировка
– Merge (слияние изменений)
– Unified Diff (формат хранения изменений)
Атомарный Commit
Commit – аналог транзакции
– Atomicity: все, или ничего
Repository
– Consistency: ???
– Isolation: ???
– Durability: откат изменений невозможен
Advanced: trunk, tags, branches
• Trunk – основная ветка
разработки кода
• Тег (tag): именованная метка
на код в репозитории на
определенный момент
времени (snapshot)
• Бранч (branch): копия кода в
репозитории,
предназначенная для
параллельной работы над
несколькими версиями
системы.
Advanced: Branches
• Для исправления ошибок в текущей версии
системы (после code freeze), при
параллельной разработки следующей
версии
Release 1 – исправление ошибок
Code freeze
merge
Trunk – основная разработка
• Для экспериментов над кодом текущей
версии
Create copy
Experimental branch
merge
Trunk – основная разработка
Final back merge
Системы контроля версий
• CVS (бесплатный, очень популярный)
• Subversion (OpenSource, простой, активно
развивается, заменяет CVS)
• Perforce (коммерческий, наиболее мощный)
• MS Visual Source Safe (коммерческий, интеграция с
MS)
• Microsoft TeamFS (коммерческий, интеграция с MS,
заменяет MS Source Safe)
• Borland StarTeam
• GIT / Mercurial
• TortoiseSVN – клиент windows для SVN
Скачать