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

Preview:

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 git@github.com: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

Спецкурс-2015

Email: at@7bits.itSkype: anna_tarasenkoWeb: 7bits.ru

Вопросы?

Recommended