Спецкурс-2015
Коллективная работа с кодом:
системы контроля версий.
Занятие 5
Спецкурс-2015
VCS (Version Control System) – инструмент
для работы с изменяющимися текстовыми
данными, например, кодом
Система контроля версий
Спецкурс-2015
1. Страшно выбросить неиспользуемый
код – вдруг пригодится
2. Сложно работать в команде, объединяя
изменения
3. Нет привычки показывать свой код
другим – не показывают, даже когда
нужно
Без системы контроля версий
Спецкурс-2015
4. Появляются разные стили и
«незаменимые сотрудники»
5. Сложно управлять версиями продукта –
непонятно, с какой версии кода он
собран
Без системы контроля версий
Спецкурс-2015
Без системы контроля версий
Спецкурс-2015
1. Есть общее хранилище кода –
репозиторий
2. Есть пронумерованные версии кода
3. У каждой версии известен автор
Преимущества СКВ
Спецкурс-2015
Доступ к любой версии проекта
Преимущества СКВ
Спецкурс-2015
Откат неудачных изменений
Экспериментальные изменения
Преимущества СКВ
Спецкурс-2015
Удобно проводить код-ревью
Преимущества СКВ
Спецкурс-2015
Просмотр истории
Преимущества СКВ
Спецкурс-2015
Поиск виновных
Преимущества СКВ
Спецкурс-2015
1. Генерация отчётов
2. Автоматизирование
тестирование
3. Continuous Deployment
Преимущества СКВ
Спецкурс-2015
Внесение изменений в общий код
только через сервер
Централизованная СКВ
Спецкурс-2015
Внесение изменений может быть
локальным
Распределенная СКВ
Спецкурс-2015
Конкретные СКВ
• SVN (Subversion) – централизованная
• Git – распределенная
• Mercurial – распределенная
Мы будем использовать Git
Спецкурс-2015
Как работают централизованные
системы контроля версий
Спецкурс-2015
• Централизованный сервер – самое
уязвимое место в системе
• Низкая скорость работы
• Нет доступа к истории оффлайн
• Сложно работать с конфликтными
изменениями
• Плохо поддерживает ветвление
Недостатки (на примере SVN):
Спецкурс-2015
Как работают распределенные
системы контроля версий
Спецкурс-2015
• У каждого – полная копия репозитория
• Многие команды выполняются
локально, без запроса к серверу
• Скорость работы
• Работа с проектом оффлайн
• Можно использовать несколько
удалённых репозиториев в одном
проекте.
• Удобная работа с ветками
Преимущества распределённых
систем контроля версий
Спецкурс-2015
Базовые команды Git
Git init
git clone
git add
git commit
git status
git push
git pull
git checkout
git branch
git log
git diff
Спецкурс-2015
Базовые команды Git
Копирование репозитория:
git clone git@github.com:rails/rails.git
Спецкурс-2015
Базовые команды Git
Текущее состояние вашей рабочей копии:
git status
Спецкурс-2015
Базовые команды Git
Добавить изменения в VCS:
git add lib/modules/my_new_file.rb
git add folder_name
git add .
Спецкурс-2015
git status
Спецкурс-2015
Базовые команды Git
User A: git commit –m ‘Add cool module #10’
User A: git push
User B: git pull
User B: git log
Спецкурс-2015
Важно:
• Сообщения к коммитам – на английском
• Все изменения локальны (до git push)
• Почти всё можно откатить обратно
• Используйте git версии 2.0 и выше
• Конфликты в git – нормальная ситуация
Спецкурс-2015
Ветки (branches)
Спецкурс-2015
Ветки (branches)
git branch
git checkout develop
…doing some stuff…
git commit
git push
Спецкурс-2015
Ветки (branches)
git checkout master
git merge develop
Спецкурс-2015
Ветки (branches)
Спецкурс-2015
Сервисы для хостинга git-
репозиториев
Спецкурс-2015
Что почитать?
• Pro Git Book
• Successful GIT Branching model
• Atomic Commits
Спецкурс-2015
Email: at@7bits.it
Skype: anna_tarasenko
Web: 7bits.ru
Вопросы?

Спецкурс-2015. Занятие 05. Системы контроля версий