Документ Microsoft Word. Системы контроля версий основа командной разработки
Скачать 235.13 Kb.
|
Системы контроля версий — основа командной разработки 26.09.2018Татьяна Георгиевская Системы контроля версий (их ещё называют системами управления версиями) – один из инструментов, который использует в своей работе любой программист от первокурсника до опытного тим-лида с сотнями успешных проектов. — Ссылки на примеры кода в репозиториях помещают в своё портфолио. — Большие проекты с открытым программным кодом получают тысячи улучшений, благодаря размещению на специализированном хостинге. — От 30 до 70% кода, использованного в программном продукте, профессиональные разработчики могут скопировать с проектов, представленных в открытых репозиториях. Незаменимы системы контроля версий в командной разработке, где синхронизация процесса играет важную роль. Но даже если Вы принципиально не работаете в команде, система контроля версий может помочь Вам справиться со многими сложными ситуациями. С необходимостью отката программы к предыдущей версии рано или поздно сталкивается любой программист. В точке А программа отлично работает, а попытка расширить функционал, ввести дополнительные переменные, классы и пр. приводит в появлению ошибки. Распознать ошибку удаётся не всегда. Поэтому многие программисты предпочитают «пройти перезагрузку» — откатиться к стабильной рабочей версии и переписать дополнения заново, построчно анализируя весь добавленный код. Реализовать такую процедуру помогает использование системы контроля версий (СКВ), которое позволяет четко отследить историю разработки, найти стабильную версию и продолжить работу. В системе контроля версий может содержаться, как программный код, так и любая другая информация (включая текстовые файлы, изображения и т.п.) Содержание Как осуществляется контроль версий Примитивная модель хранения версий Локальные системы контроля версий Централизованные системы контроля версий Децентрализованные системы контроля версий Современные системы контроля версий Git Как работает git Дерево проекта Git-хостинг Git-клиент Как осуществляется контроль версий Существует несколько моделей хранения данных: Примитивная модель хранения версий В примитивной модели актуальные копии проекта перезаписываются в отдельную директорию через определённый промежуток времени. Достоинства: — возможность восстановления данных одной из записанных версий. Недостатки: — сложности с поиском необходимой версии в обширной и плохо структурированной базе данных; — возможность потери данных вследствие возникновения физических поломок оборудования; — отсутствие возможности совместной разработки. Локальные системы контроля версий Локальные СКВ обычно хранят на компьютере список изменений, внесенных в файлы. Основываясь на этих данных, система контроля версий воссоздает нужную версию файла (актуальную на определенный момент времени). Локальные системы контроля версий Достоинства: — возможность восстановления данных из определенной версии (точно определяется по времени записи); — высокая скорость выполнения восстановления (база данных четко структурирована, поэтому сложностей при поиске не возникает, сетевая задержка отсутствует, поскольку данные хранятся непосредственно на рабочем компьютере). Недостатки: — возможность потери данных вследствие возникновения физических поломок оборудования; — отсутствие возможности совместной разработки. Централизованные системы контроля версий Централизованные системы контроля версий предполагают сохранение версий проектов на общий сервер, с которого потом получают нужные версии клиенты. Централизованные системы контроля версий Достоинства: — возможность восстановления данных из определенной версии (точно определяется по времени записи); — возможность ведения командной разработки проекта; Недостатки: — отсутствие доступа к данным при сбое работы сервера; — довольно низкая скорость работы (из-за возникновения сетевых задержек). Децентрализованные системы контроля версий В децентрализованных системах контроля версий при каждом копировании удалённого репозитория (расположенного на сервере) происходит полное копирование данных в локальный репозиторий (установленный на рабочем компьютере). Каждая копия содержит все данные, хранящиеся в удалённом репозитории. В случае, возникновения технической неисправности на стороне сервера, удаленный репозиторий можно перезаписать с любой сохраненной копии. Децентрализованные системы контроля версий Достоинства: — возможность восстановления данных из определенной версии (точно определяется по времени записи); — возможность ведения командной разработки проекта; — при сбое работы сервера система сохраняет данные в локальном репозитории, что позволяет эффективно вести процесс разработки, а после восстановления работы сервера, передать все изменения в удаленный репозиторий; — при физической поломке сервера данные можно легко перенести в новый удалённый репозиторий с любого локального репозитория; — высокая скорость работы (в ходе работы данные записываются и получаются из локального репозитория, поэтому сетевые задержки отсутствуют). Современные системы контроля версий Существует много систем контроля версий (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 Работа с системами контроля версий — важный навык, нужный каждому программисту. Осваивайте git, и пусть ваши данные всегда будут под надежной защитой. |