190 likes | 391 Views
Организация работы коллектива программистов с использованием системы контроля версий на примере CVS. Михаил Пизик (miha@xbow.ru). Содержание доклада. Что такое Система контроля версий Почему CVS? Преимущества CVS Подготовка к работе с CVS Правило Полного обновления
E N D
Организация работы коллектива программистов с использованием системы контроля версий на примере CVS. Михаил Пизик (miha@xbow.ru)
Содержание доклада • Что такое Система контроля версий • Почему CVS? • Преимущества CVS • Подготовка к работе с CVS • Правило Полного обновления • Особенности работы с CVS
Что такое Система контроля версий (1) • Когда возникает необходимость в Системе контроля версий? • Когда >= 1разработчика • Необходимо хранить историю развития проекта • Необходимость ведения нескольких веток проекта • Резервное копирование исходников
Game.cpp v.1.0 Система контроля версий Game.cpp v.1.1 Game.cpp v.1.2 Репозиторий Game.cpp v.2.0 Что такое Система контроля версий (2) Клиент A Game.cpp v.2.0 Протокол Клиент B Game.cpp (изм.) Клиент C Game.cpp v.1.1
Почему CVS? (1) • Опыт общения с VSS (3 месяца) • состояние неуверенности • ожидание разблокировки • куда делись изменения?!!! Вывод: мало знаний, что то не так… • Опыт общения с CVS (2года) • первых 3 месяца: опять что-то происходит не так • озарение! суть CVS в простоте! • выработаны правила работы с CVS • налаженная работа уже 2 года
Почему CVS? (2) • Почему в начале было недоверие к CVS? • хорошая система бесплатной не бывает • она же под Unix! • сложности при настройке • непонятное поведение • Что теперь? • устойчивая работа 2 года • интенсивная работа c CVS во время дедлайна • легкое обучение новичков правилам работы
Преимущества CVS (1) • Клиент-серверная архитектура • Полноценные ветки проекта • Прозрачный формат репозитория • Малый объём репозитория • Многопользовательское редактирование файлов • Статистика работы с файлами проекта • Доступ из WEB • Распространенность (www.sourceforge.net) • Цена, CVS – бесплатный продукт!
Создание ветки: GUI_BRANCH Ветка разработки GUI TAG: GUI_VER_1_0 Внедрение GUI версия 1.0 Обязательно создать метки! TAG: GUI_VER_1_1 Обновление GUI версия 1.1 Изменения GUI между версией 1.0 и 1.1 Преимущества CVS (2) Ветки проекта: Основная ветка проекта - ствол
Подготовка к работе с CVS (1) • Что из себя представляет CVS? • это в первую очередь инструмент • “заточен” для работы с текстовыми файлами • может хранить бинарные файлы, но не поддерживает слитие изменений для них • сервер (служба) и клиенты (консольные) • на сервере – Репозиторий с проектами • доступ по сетевым протоколам (сжатие, шифрование)
Подготовка к работе с CVS (2) Для работы на Windows платформе: Сервер: CVS for NT (можно установить для Win9x, но будут ограничения) • Протокол: pserver(простота настройки) • Доступ только из локальной сети. • Клиент: WinCVS (консольная версия с оконным интерфейсом)
Подготовка к работе с CVS (3) • Запустить сервер CVS • Создать репозиторий (указать в CVS for NT) • Создать пользователей для доступа к CVS • Перед началом с сервером Login • Закачать исходный проект в репозиторий (Import Module) • Для каждого разработчика скачать проект в рабочую папку (Checkout Module)
Корневой каталог проектов Каталоги проектов Файлы выбранного каталога Логи и сообщения CVS Получить и Отправить выбранное в репозиторий Фильтр выводимых файлов Сравнение, статистика, граф версий, удаление Создание, удаление меток, создание веток Добавление и удаление файлов в репозитории WinCVS
Локальные изменения Программиста Б, приведшие к конфликту Изменения, пришедшие с версией 1.2 (от Программиста A), с которыми произошёл конфликт. Локализованный конфликт Правило Полного обновления Пример конфликтной ситуации: Файл Track.cpp, версия1.1, строка: const int a = 0; Программист А изменил строку на: const int a = 1; и залил изменения в репозиторий(стала версия 1.2). Одновременно Программист Б изменил строку на: const int a = 20; и перед отправкой по правилу полностьюобновил проект. CVS обнаружил конфликт и обозначил его в файле так: <<<<<<< Track.cpp const int a = 20; ======= const int a = 1; >>>>>>> 1.2 В репозитории всегда храниться последняя, работоспособная версия. Шаги для Правила полного обновления: • Скачать ПОЛНОСТЬЮ все изменения проекта из репозитория. • Если есть конфликты изменений, исправить их. • Убедиться в работоспособности скаченных изменений (компиляция и проверка). • Убедиться, что за время проверки не появилось новых обновлений (шаг 1, F4 в WinCVS). • В конце ПОЛНОСТЬЮ залить изменения в репозиторий CVS. Программист Б сам, или с помощью программиста А выясняет, как исправить конфликт В итоге конфликт исправен, в репозиторий залита новая версия1.3: const int a = 21;
Особенности работы с CVS (1) • Интеграция с IDE не нужна • Первого пользователя заводить по протоколу “local” • При импорте проекта корректно указывать типы файлов (текстовые: cpp, c, h, hpp, dsw, dsp, sln, vcproj, rc, xml) • Получать изначально проект из репозитория в пустую папку • Отдельно закачивать файл “*.vcproj” • Перегружать проект в 7-ой VisualStudio в ручную в случае обновления из репозитория файла “*.vcproj” • CVS никогда не даёт просто потерять исходники, а сохраняет их в определённом формате: “.#test.cpp.1.2”
Особенности работы с CVS (2) • При полном обновлении полезно включить опцию “Create missing directories that exist in the repository” • Следить за вновь созданными файлами, не забывать добавлять их в репозиторий. • В настройках WinCVS лучше отключить опцию “Checkout read only” • Пользоваться фильтрами файлов в WinCVS • Внимание, при использовании Sticky option (вернуться к последней версии: “Reset any sticky date/tag options”) • При слитии веток рекомендуется всегда обозначать точку слития в исходной ветке меткой (TAG).
Особенности работы с CVS (3) • Проверка возможных обновлений в WinCVS с помощью клавиши F4 • В среде CVS есть возможность использования ключевых слов (keywords) • Для удаления файла из репозитория пользоваться командной Remove в WinCVS для пометки его к удалению с последующим обновлением в репозиторий • При удалении всех файлов в каталоге CVS автоматически удаляет сам каталог при следующем обновлении • “Зависшие”lock`и в проекте можно убрать, удалив вручную найденный файл lock в репозитории CVS.
Ссылки Ниже приведены ссылки, по которым можно скачатьнеобходимый для работы софт, а так же найтиподробную документацию по работе с CVS: • CVS: http://www.cvshome.org • CVS for NT: http://www.cvsnt.org • WinCVS: http://www.wincvs.org • Документация: http://www.cvs.ru
Конец Вопросы? miha@xbow.ru mihapro@newmail.ru