![Page 1: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/1.jpg)
Спецкурс-2015
Коллективная работа с кодом: системы контроля версий.
Занятие 5
![Page 2: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/2.jpg)
Спецкурс-2015
VCS (Version Control System) – инструмент для работы с изменяющимися текстовыми
данными, например, кодом
Система контроля версий
![Page 3: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/3.jpg)
Спецкурс-2015
1. Страшно выбросить неиспользуемый код – вдруг пригодится
2. Сложно работать в команде, объединяя изменения
3. Нет привычки показывать свой код другим – не показывают, даже когда нужно
Без системы контроля версий
![Page 4: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/4.jpg)
Спецкурс-2015
4. Появляются разные стили и «незаменимые сотрудники»
5. Сложно управлять версиями продукта – непонятно, с какой версии кода он собран
Без системы контроля версий
![Page 5: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/5.jpg)
Спецкурс-2015
Без системы контроля версий
![Page 6: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/6.jpg)
Спецкурс-2015
1. Есть общее хранилище кода – репозиторий
2. Есть пронумерованные версии кода3. У каждой версии известен автор
Преимущества СКВ
![Page 7: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/7.jpg)
Спецкурс-2015
Доступ к любой версии проекта
Преимущества СКВ
![Page 8: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/8.jpg)
Спецкурс-2015
Откат неудачных измененийЭкспериментальные изменения
Преимущества СКВ
![Page 9: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/9.jpg)
Спецкурс-2015
Удобно проводить код-ревью
Преимущества СКВ
![Page 10: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/10.jpg)
Спецкурс-2015
Просмотр истории
Преимущества СКВ
![Page 11: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/11.jpg)
Спецкурс-2015
Поиск виновных
Преимущества СКВ
![Page 12: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/12.jpg)
Спецкурс-2015
1. Генерация отчётов2. Автоматизирование
тестирование3. Continuous Deployment
Преимущества СКВ
![Page 13: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/13.jpg)
Спецкурс-2015
Внесение изменений в общий код только через сервер
Централизованная СКВ
![Page 14: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/14.jpg)
Спецкурс-2015
Внесение изменений может быть локальным
Распределенная СКВ
![Page 15: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/15.jpg)
Спецкурс-2015
Конкретные СКВ
• SVN (Subversion) – централизованная• Git – распределенная• Mercurial – распределенная
Мы будем использовать Git
![Page 16: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/16.jpg)
Спецкурс-2015
Как работают централизованные системы контроля версий
![Page 17: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/17.jpg)
Спецкурс-2015
• Централизованный сервер – самое уязвимое место в системе
• Низкая скорость работы• Нет доступа к истории оффлайн• Сложно работать с конфликтными
изменениями• Плохо поддерживает ветвление
Недостатки (на примере SVN):
![Page 18: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/18.jpg)
Спецкурс-2015
Как работают распределенные системы контроля версий
![Page 19: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/19.jpg)
Спецкурс-2015
• У каждого – полная копия репозитория• Многие команды выполняются
локально, без запроса к серверу• Скорость работы• Работа с проектом оффлайн• Можно использовать несколько
удалённых репозиториев в одном проекте.
• Удобная работа с ветками
Преимущества распределённых систем контроля версий
![Page 20: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/20.jpg)
Спецкурс-2015
Базовые команды GitGit initgit clonegit addgit commitgit statusgit pushgit pullgit checkoutgit branchgit loggit diff
![Page 21: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/21.jpg)
Спецкурс-2015
Базовые команды Git
Копирование репозитория:
git clone [email protected]:rails/rails.git
![Page 22: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/22.jpg)
Спецкурс-2015
Базовые команды Git
Текущее состояние вашей рабочей копии:
git status
![Page 23: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/23.jpg)
Спецкурс-2015
Базовые команды Git
Добавить изменения в VCS:
git add lib/modules/my_new_file.rbgit add folder_namegit add .
![Page 24: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/24.jpg)
Спецкурс-2015
git status
![Page 25: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/25.jpg)
Спецкурс-2015
Базовые команды Git
User A: git commit –m ‘Add cool module #10’User A: git push
User B: git pullUser B: git log
![Page 26: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/26.jpg)
Спецкурс-2015
Важно:
• Сообщения к коммитам – на английском• Все изменения локальны (до git push)• Почти всё можно откатить обратно• Используйте git версии 2.0 и выше• Конфликты в git – нормальная ситуация
![Page 27: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/27.jpg)
Спецкурс-2015
Ветки (branches)
![Page 28: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/28.jpg)
Спецкурс-2015
Ветки (branches)
git branchgit checkout develop
…doing some stuff…
git commitgit push
![Page 29: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/29.jpg)
Спецкурс-2015
Ветки (branches)
git checkout mastergit merge develop
![Page 30: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/30.jpg)
Спецкурс-2015
Ветки (branches)
![Page 31: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/31.jpg)
Спецкурс-2015
Сервисы для хостинга git-репозиториев
![Page 32: Спецкурс-2015. Занятие 05. Системы контроля версий](https://reader034.vdocuments.site/reader034/viewer/2022050811/589e24221a28ab605b8b71b3/html5/thumbnails/32.jpg)
Спецкурс-2015
Что почитать?
• Pro Git Book
• Successful GIT Branching model
• Atomic Commits