18
Организация работы коллектива программистов с использованием системы контроля версий на примере CVS. Михаил Пизик ([email protected])

Михаил Пизик ([email protected])

Embed Size (px)

DESCRIPTION

Организация работы коллектива программистов с использованием системы контроля версий на примере CVS. Михаил Пизик ([email protected]). Содержание доклада. Что такое Система контроля версий Почему CVS? Преимущества CVS Подготовка к работе с CVS Правило Полного обновления - PowerPoint PPT Presentation

Citation preview

Page 1: Михаил Пизик   (miha@xbow.ru)

Организация работы коллектива программистов с использованием системы контроля версий на примере CVS.

Михаил Пизик ([email protected])

Page 2: Михаил Пизик   (miha@xbow.ru)

2

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Содержание доклада

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

• Почему CVS?

• Преимущества CVS

• Подготовка к работе с CVS

• Правило Полного обновления• Особенности работы с CVS

Page 3: Михаил Пизик   (miha@xbow.ru)

3

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Что такое Система контроля версий (1)

• Когда возникает необходимость в Системе контроля версий?

• Когда >= 1 разработчика• Необходимо хранить историю развития проекта• Необходимость ведения нескольких веток проекта• Резервное копирование исходников

Page 4: Михаил Пизик   (miha@xbow.ru)

4

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Что такое Система контроля версий (2)

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

Game.cpp v.1.0Game.cpp v.1.0

Game.cpp v.1.1Game.cpp v.1.1

Game.cpp v.1.2Game.cpp v.1.2

Game.cpp v.2.0Game.cpp v.2.0

Репозиторий

Клиент A

Game.cpp v.2.0Game.cpp v.2.0

Клиент B

Game.cpp (изм.)Game.cpp (изм.)

Клиент C

Game.cpp v.1.1Game.cpp v.1.1

Пр

ото

кол

Page 5: Михаил Пизик   (miha@xbow.ru)

5

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Почему CVS? (1)• Опыт общения с VSS (3 месяца)

– состояние неуверенности– ожидание разблокировки– куда делись изменения?!!!

Вывод: мало знаний, что то не так…

• Опыт общения с CVS (2 года)– первых 3 месяца: опять что-то происходит не так– озарение! суть CVS в простоте!– выработаны правила работы с CVS– налаженная работа уже 2 года

Page 6: Михаил Пизик   (miha@xbow.ru)

6

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Почему CVS? (2)• Почему в начале было недоверие к CVS?

– хорошая система бесплатной не бывает– она же под Unix!– сложности при настройке– непонятное поведение

• Что теперь?– устойчивая работа 2 года– интенсивная работа c CVS во время дедлайна– легкое обучение новичков правилам работы

Page 7: Михаил Пизик   (miha@xbow.ru)

7

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Преимущества CVS (1)• Клиент-серверная архитектура • Полноценные ветки проекта• Прозрачный формат репозитория• Малый объём репозитория• Многопользовательское редактирование файлов• Статистика работы с файлами проекта• Доступ из WEB• Распространенность (www.sourceforge.net)• Цена, CVS – бесплатный продукт!

Page 8: Михаил Пизик   (miha@xbow.ru)

8

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Преимущества CVS (2)

Ветки проекта:

Внедрение

GUI версия 1.0

Обновление

GUI версия 1.1

Основная ветка проекта - ствол

Ветка разработки GUI

Изменения GUI между версией 1.0 и 1.1

Обязательно создать метки!

TAG: GUI_VER_1_0

TAG: GUI_VER_1_1

Создание ветки:

GUI_BRANCH

Page 9: Михаил Пизик   (miha@xbow.ru)

9

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Подготовка к работе с CVS (1)• Что из себя представляет CVS?

– это в первую очередь инструмент– “заточен” для работы с текстовыми файлами– может хранить бинарные файлы, но не поддерживает

слитие изменений для них– сервер (служба) и клиенты (консольные)– на сервере – Репозиторий с проектами– доступ по сетевым протоколам (сжатие, шифрование)

Page 10: Михаил Пизик   (miha@xbow.ru)

10

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Подготовка к работе с CVS (2)Для работы на Windows платформе:

Сервер: CVS for NT (можно установить для Win9x, но будут ограничения)– Протокол: pserver (простота настройки)– Доступ только из локальной сети.

• Клиент: WinCVS (консольная версия с оконным интерфейсом)

Page 11: Михаил Пизик   (miha@xbow.ru)

11

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Подготовка к работе с CVS (3)• Запустить сервер CVS• Создать репозиторий (указать в CVS for NT)• Создать пользователей для доступа к CVS• Перед началом с сервером Login• Закачать исходный проект в репозиторий (Import Module)• Для каждого разработчика скачать проект в рабочую

папку (Checkout Module)

Page 12: Михаил Пизик   (miha@xbow.ru)

12

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

WinCVS Корневой каталог проектовКорневой каталог проектовКаталоги проектовКаталоги проектовФайлы выбранного каталогаФайлы выбранного каталогаЛоги и сообщения Логи и сообщения CVSCVSПолучить и Отправить выбранное в Получить и Отправить выбранное в репозиторийрепозиторийФильтр выводимых файловФильтр выводимых файловДобавление и удаление файлов в Добавление и удаление файлов в репозиториирепозиторииСравнение, статистика, граф версий, Сравнение, статистика, граф версий, удалениеудалениеСоздание, удаление меток, создание ветокСоздание, удаление меток, создание веток

Page 13: Михаил Пизик   (miha@xbow.ru)

13

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Правило Полного обновленияВ репозитории всегда храниться последняя,

работоспособная версия.

Шаги для Правила полного обновленияПравила полного обновления:1) Скачать ПОЛНОСТЬЮ все изменения проекта из

репозитория.

2) Если есть конфликты изменений, исправить их.

3) Убедиться в работоспособности скаченных изменений (компиляция и проверка).

4) Убедиться, что за время проверки не появилось новых обновлений (шаг 1, F4 в WinCVS).

5) В конце ПОЛНОСТЬЮ залить изменения в репозиторий CVS.

Пример конфликтной ситуации:Файл Track.cpp, версия 1.1, строка:const int a = 0;

Программист А изменил строку на:const int a = 1;и залил изменения в репозиторий (стала версия 1.2).

Одновременно Программист Б изменил строку на:const int a = 20;

и перед отправкой по правилу полностью обновил проект.CVS обнаружил конфликт и обозначил его в файле так:<<<<<<< Track.cppconst int a = 20;=======const int a = 1;>>>>>>> 1.2

Локализованный конфликт

Локальные изменения Программиста Б, приведшие к конфликтуИзменения, пришедшие с версией 1.2 (от Программиста A), с которыми произошёл конфликт.

Программист Б сам, или с помощью программиста А выясняет, как исправить конфликт

В итоге конфликт исправен, в репозиторий залита новая версия 1.3:

const int a = 21;

Page 14: Михаил Пизик   (miha@xbow.ru)

14

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Особенности работы с CVS (1)• Интеграция с IDE не нужна• Первого пользователя заводить по протоколу “local”• При импорте проекта корректно указывать типы файлов

(текстовые: cpp, c, h, hpp, dsw, dsp, sln, vcproj, rc, xml)• Получать изначально проект из репозитория в пустую

папку• Отдельно закачивать файл “*.vcproj”• Перегружать проект в 7-ой VisualStudio в ручную в

случае обновления из репозитория файла “*.vcproj”• CVS никогда не даёт просто потерять исходники, а

сохраняет их в определённом формате: “.#test.cpp.1.2”

Page 15: Михаил Пизик   (miha@xbow.ru)

15

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Особенности работы с CVS (2)• При полном обновлении полезно включить опцию

“Create missing directories that exist in the repository”• Следить за вновь созданными файлами, не забывать

добавлять их в репозиторий.• В настройках WinCVS лучше отключить опцию “Checkout

read only”• Пользоваться фильтрами файлов в WinCVS• Внимание, при использовании Sticky option (вернуться к

последней версии: “Reset any sticky date/tag options”)• При слитии веток рекомендуется всегда обозначать

точку слития в исходной ветке меткой (TAG).

Page 16: Михаил Пизик   (miha@xbow.ru)

16

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Особенности работы с CVS (3)• Проверка возможных обновлений в WinCVS с помощью

клавиши F4• В среде CVS есть возможность использования ключевых

слов (keywords)• Для удаления файла из репозитория пользоваться

командной Remove в WinCVS для пометки его к удалению с последующим обновлением в репозиторий

• При удалении всех файлов в каталоге CVS автоматически удаляет сам каталог при следующем обновлении

• “Зависшие” lock`и в проекте можно убрать, удалив вручную найденный файл lock в репозитории CVS.

Page 17: Михаил Пизик   (miha@xbow.ru)

17

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Ссылки

Ниже приведены ссылки, по которым можно скачать необходимый для работы софт, а так же найти подробную документацию по работе с CVS:

•CVS: http://www.cvshome.org•CVS for NT: http://www.cvsnt.org•WinCVS: http://www.wincvs.org•Документация: http://www.cvs.ru

Page 18: Михаил Пизик   (miha@xbow.ru)

18

Организация работы коллектива программистовс использованием системы контроля версий на примере CVS.

Михаил Пизик

Конец

Вопросы?Вопросы?

[email protected]

[email protected]