Upload
7bits
View
269
Download
2
Embed Size (px)
Citation preview
Спецкурс-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
Базовые команды GitGit initgit clonegit addgit commitgit statusgit pushgit pullgit checkoutgit branchgit loggit diff
Спецкурс-2015
Базовые команды Git
Копирование репозитория:
git clone [email protected]:rails/rails.git
Спецкурс-2015
Базовые команды Git
Текущее состояние вашей рабочей копии:
git status
Спецкурс-2015
Базовые команды Git
Добавить изменения в VCS:
git add lib/modules/my_new_file.rbgit add folder_namegit add .
Спецкурс-2015
git status
Спецкурс-2015
Базовые команды Git
User A: git commit –m ‘Add cool module #10’User A: git push
User B: git pullUser B: git log
Спецкурс-2015
Важно:
• Сообщения к коммитам – на английском• Все изменения локальны (до git push)• Почти всё можно откатить обратно• Используйте git версии 2.0 и выше• Конфликты в git – нормальная ситуация
Спецкурс-2015
Ветки (branches)
Спецкурс-2015
Ветки (branches)
git branchgit checkout develop
…doing some stuff…
git commitgit push
Спецкурс-2015
Ветки (branches)
git checkout mastergit merge develop
Спецкурс-2015
Ветки (branches)
Спецкурс-2015
Сервисы для хостинга git-репозиториев
Спецкурс-2015
Что почитать?
• Pro Git Book
• Successful GIT Branching model
• Atomic Commits