33
Спецкурс-2015 Коллективная работа с кодом: системы контроля версий. Занятие 5

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

  • Upload
    7bits

  • View
    269

  • Download
    2

Embed Size (px)

Citation preview

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

Спецкурс-2015

Коллективная работа с кодом: системы контроля версий.

Занятие 5

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

Спецкурс-2015

VCS (Version Control System) – инструмент для работы с изменяющимися текстовыми

данными, например, кодом

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

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

Спецкурс-2015

1. Страшно выбросить неиспользуемый код – вдруг пригодится

2. Сложно работать в команде, объединяя изменения

3. Нет привычки показывать свой код другим – не показывают, даже когда нужно

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

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

Спецкурс-2015

4. Появляются разные стили и «незаменимые сотрудники»

5. Сложно управлять версиями продукта – непонятно, с какой версии кода он собран

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

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

Спецкурс-2015

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

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

Спецкурс-2015

1. Есть общее хранилище кода – репозиторий

2. Есть пронумерованные версии кода3. У каждой версии известен автор

Преимущества СКВ

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

Спецкурс-2015

Доступ к любой версии проекта

Преимущества СКВ

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

Спецкурс-2015

Откат неудачных измененийЭкспериментальные изменения

Преимущества СКВ

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

Спецкурс-2015

Удобно проводить код-ревью

Преимущества СКВ

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

Спецкурс-2015

Просмотр истории

Преимущества СКВ

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

Спецкурс-2015

Поиск виновных

Преимущества СКВ

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

Спецкурс-2015

1. Генерация отчётов2. Автоматизирование

тестирование3. Continuous Deployment

Преимущества СКВ

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

Спецкурс-2015

Внесение изменений в общий код только через сервер

Централизованная СКВ

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

Спецкурс-2015

Внесение изменений может быть локальным

Распределенная СКВ

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

Спецкурс-2015

Конкретные СКВ

• SVN (Subversion) – централизованная• Git – распределенная• Mercurial – распределенная

Мы будем использовать Git

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

Спецкурс-2015

Как работают централизованные системы контроля версий

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

Спецкурс-2015

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

• Низкая скорость работы• Нет доступа к истории оффлайн• Сложно работать с конфликтными

изменениями• Плохо поддерживает ветвление

Недостатки (на примере SVN):

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

Спецкурс-2015

Как работают распределенные системы контроля версий

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

Спецкурс-2015

• У каждого – полная копия репозитория• Многие команды выполняются

локально, без запроса к серверу• Скорость работы• Работа с проектом оффлайн• Можно использовать несколько

удалённых репозиториев в одном проекте.

• Удобная работа с ветками

Преимущества распределённых систем контроля версий

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

Спецкурс-2015

Базовые команды GitGit initgit clonegit addgit commitgit statusgit pushgit pullgit checkoutgit branchgit loggit diff

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

Спецкурс-2015

Базовые команды Git

Копирование репозитория:

git clone [email protected]:rails/rails.git

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

Спецкурс-2015

Базовые команды Git

Текущее состояние вашей рабочей копии:

git status

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

Спецкурс-2015

Базовые команды Git

Добавить изменения в VCS:

git add lib/modules/my_new_file.rbgit add folder_namegit add .

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

Спецкурс-2015

git status

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

Спецкурс-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. Системы контроля версий

Спецкурс-2015

Важно:

• Сообщения к коммитам – на английском• Все изменения локальны (до git push)• Почти всё можно откатить обратно• Используйте git версии 2.0 и выше• Конфликты в git – нормальная ситуация

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

Спецкурс-2015

Ветки (branches)

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

Спецкурс-2015

Ветки (branches)

git branchgit checkout develop

…doing some stuff…

git commitgit push

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

Спецкурс-2015

Ветки (branches)

git checkout mastergit merge develop

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

Спецкурс-2015

Ветки (branches)

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

Спецкурс-2015

Сервисы для хостинга git-репозиториев

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

Спецкурс-2015

Что почитать?

• Pro Git Book

• Successful GIT Branching model

• Atomic Commits

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

Спецкурс-2015

Email: [email protected]: anna_tarasenkoWeb: 7bits.ru

Вопросы?