Лекция организация командной работы. Организация работы команды в системе контроля версий. Организация работы команды в системе контроля версий
Скачать 194.24 Kb.
|
Организация работы команды в системе контроля версий. Системы контроля версий (их ещё называют системами управления версиями) – один из инструментов, который использует в своей работе любой программист от первокурсника до опытного тим-лида с сотнями успешных проектов. — Ссылки на примеры кода в репозиториях помещают в своё портфолио. — Большие проекты с открытым программным кодом получают тысячи улучшений, благодаря размещению на специализированном хостинге. — От 30 до 70% кода, использованного в программном продукте, профессиональные разработчики могут скопировать с проектов, представленных в открытых репозиториях. Незаменимы системы контроля версий в командной разработке, где синхронизация процесса играет важную роль. Но даже если Вы принципиально не работаете в команде, система контроля версий может помочь Вам справиться со многими сложными ситуациями. С необходимостью отката программы к предыдущей версии рано или поздно сталкивается любой программист. В точке А программа отлично работает, а попытка расширить функционал, ввести дополнительные переменные, классы и пр. приводит в появлению ошибки. Распознать ошибку удаётся не всегда. Поэтому многие программисты предпочитают «пройти перезагрузку» — откатиться к стабильной рабочей версии и переписать дополнения заново, построчно анализируя весь добавленный код. Реализовать такую процедуру помогает использование системы контроля версий (СКВ), которое позволяет четко отследить историю разработки, найти стабильную версию и продолжить работу. В системе контроля версий может содержаться, как программный код, так и любая другая информация (включая текстовые файлы, изображения и т.п.) Примитивная модель хранения версий В примитивной модели актуальные копии проекта перезаписываются в отдельную директорию через определённый промежуток времени. Достоинства: — возможность восстановления данных одной из записанных версий. Недостатки: — сложности с поиском необходимой версии в обширной и плохо структурированной базе данных; — возможность потери данных вследствие возникновения физических поломок оборудования; — отсутствие возможности совместной разработки. Локальные системы контроля версий Локальные СКВ обычно хранят на компьютере список изменений, внесенных в файлы. Основываясь на этих данных, система контроля версий воссоздает нужную версию файла (актуальную на определенный момент времени). Локальные системы контроля версий Достоинства: — возможность восстановления данных из определенной версии (точно определяется по времени записи); — высокая скорость выполнения восстановления (база данных четко структурирована, поэтому сложностей при поиске не возникает, сетевая задержка отсутствует, поскольку данные хранятся непосредственно на рабочем компьютере). Недостатки: — возможность потери данных вследствие возникновения физических поломок оборудования; — отсутствие возможности совместной разработки. Централизованные системы контроля версий Централизованные системы контроля версий предполагают сохранение версий проектов на общий сервер, с которого потом получают нужные версии клиенты. Централизованные системы контроля версий Достоинства: — возможность восстановления данных из определенной версии (точно определяется по времени записи); — возможность ведения командной разработки проекта; Недостатки: — отсутствие доступа к данным при сбое работы сервера; — довольно низкая скорость работы (из-за возникновения сетевых задержек). Децентрализованные системы контроля версий В децентрализованных системах контроля версий при каждом копировании удалённого репозитория (расположенного на сервере) происходит полное копирование данных в локальный репозиторий (установленный на рабочем компьютере). Каждая копия содержит все данные, хранящиеся в удалённом репозитории. В случае, возникновения технической неисправности на стороне сервера, удаленный репозиторий можно перезаписать с любой сохраненной копии. Децентрализованные системы контроля версий Достоинства: — возможность восстановления данных из определенной версии (точно определяется по времени записи); — возможность ведения командной разработки проекта; — при сбое работы сервера система сохраняет данные в локальном репозитории, что позволяет эффективно вести процесс разработки, а после восстановления работы сервера, передать все изменения в удаленный репозиторий; — при физической поломке сервера данные можно легко перенести в новый удалённый репозиторий с любого локального репозитория; — высокая скорость работы (в ходе работы данные записываются и получаются из локального репозитория, поэтому сетевые задержки отсутствуют). Современные системы контроля версий Существует много систем контроля версий (Git, Darcs, Mercurial, Bazaar, Monotone и т.д), сходных по принципу работы и конечным задачам. Отличаются они друг от друга архитектурой, использованными решениями и удобством работы. Самая популярная на сегодняшний день система контроля версий – Git. Git Git Умение работать с git’ом — обязательный навык для программиста любого профиля. Можно долго обсуждать преимущества и недостатки разных систем контроля версий, но большинство компаний используют git, поэтому уметь работать с git’ом нужно всем. Git – распределённая система контроля версий. Что даёт ей все преимущества децентрализованной СКВ: — высокую скорость проведения всех операций (за счет отсутствия сетевой задержки); — идеальные условия для командной разработки; — страховку от потери информации при возникновении проблем с центральным сервером. Для контроля версий в git используются 2 репозитория: локальный и удаленный. Локальный репозиторий (полноценный репозиторий, а не ссылки или копии отдельных ветвей) находится на компьютере разработчика, а удаленный на удалённом сервере. Доступ к удаленному репозиторию обеспечивается благодаря гит-хостингу Github, Google Code, GitLab и т.д. Как работает git Взаимодействие с удаленным репозиторием происходит при наличии интернета и, по сути, представляет собой синхронизацию двух репозиториев. Команда push копирует новые данные, содержащиеся в локальном репозитории, в удалённый репозиторий, а команда pull передает данные из удаленного репозитория в локальный. Каждая версия документа, внесенные обновления и т.д записываются в локальный репозиторий. Дерево проекта Дерево файлов в системе контроля версий В репозитории содержится «дерево» проекта, то есть все сохраненные версии файлов. Дерево может быть прямым (в этом случае каждое последующее сохранение файлов производилось после предыдущего без возвращения к более ранним версиям) и разветвленным. К появлению «веток» приводит работа с более ранними версиями и сохранение внесённых изменений. На различных ветках дерева содержатся сохранения, основой которых был один исходный файл. В ходе работы в файлы на разных ветках были внесены разные изменения. В системе управления версиями можно работать со всеми ветками дерева проекта, пошагово, изменяя и дополняя содержащиеся в них данные. После проведения ряда изменений 2 ветки могут «срастись», в новой версии файла будут учтены все внесенные изменения. Git-хостинг Для комфортной работы с git нужно зарегистрироваться на любом git-хостинге. Их довольно много: Github, Sourceforge, Google Code, GitLab, Codebase и т.д. Самый популярный на данный момент git-хостинг – это Github. Популярность его обоснована простым интуитивно понятным интерфейсом, поддержкой проектов с открытым кодом (возможностью бесплатно размещать такие проекты на хостинге) и обширным функционалом. Git-клиент Для удобства работы с системой контроля версий git разработан целый ряд графических git-клиентов. Это программы, позволяющие эффективно работать с системой контроля версий, используя графический интерфейс. Многие IDE предполагают возможность работы с git. Работа с Git через IDE Работа с системами контроля версий — важный навык, нужный каждому программисту. |