Доброго времени суток. Сегодня хотели бы рассказать немного о системах контроля версий проектов и каким образом они помогают не сойти с ума при разработке веб-приложений.
Системы контроля версий (Version Control System, VCS) используются для облегчения фиксации и контроля изменений в проекте. Таких систем существует огромное множество. Самые популярные среди них — svn, mercurial, git. Наша компания активно использует именно последний вариант, потому что в git лучше реализована работа с ветками проекта, возможность одновременной работы нескольких разработчиков и проекты на git «весят» меньше, чем их аналоги на других VCS.
Из чего состоит проект в git.
Из веток (branches). Ветка — это копия проекта, созданная для внесения отдельностоящих изменений. Также, обязательно существует основная защищенная ветка (master), в которую сливают изменения из других веток. Чаще всего, под определенную задачу выделяют отдельную ветку (в свою очередь, она может разделяться на другие ветки для подзадач), а после выполнения задачи и тестирования проекта с этими изменениям, выполняют слияние этой ветки с master-веткой.
Организация работы с использованием git. GitLab
Все команды git выполняются консольно, в том числе и на удаленном сервере. Для упрощения работы с git на сервере, можно использовать веб-интерфейс GitLab (инструкция по установке на свой сервер). Существует множество утилит для работы с локальными репозиториями и плагинов для интеграции git в популярные редакторы и IDE для разработчиков (Notepad++, Sublime Text, Eclipse, NetBeans, PhpStorm/WebStorm и т.д.).
В GitLab, обычно для команды разработчиков создают группу, в которую добавляют проекты, над которыми команда будет работать. Потом, обычно, каждый разработчик делает приватную копию проекта в своем аккаунте и работает непосредственно с ней. По завершению цикла работ, разработчики делают заявки на слияние своей приватной версии проекта с общей главной версией.
Конечно же, не все происходит полностью автоматически. Если в процессе разработки, в разных ветках изменялись одни и теже файлы, то могут возникнуть конфликты слияния (merge conflict). После решения конфликтов, в master-ветке основного общего репозитория должен находиться полностью рабочий, протестированный проект. Все ветки и приватные версии репозитория, которые не были влиты в master-ветку, чистятся и удаляются.
Какие возможности все это открывает.
С git можно без боли:
- параллельно вести работу над проектом нескольким разработчикам;
- синхронизировать локальные репозитории и ветки на нескольких компьютерах;
- всегда иметь рабочую и протестированную сборочную версию проекта;
- быстро просматривать список изменений, внесенных в проект на любом этапе;
- откатывать проект до более раннего состояния.
Чтобы использовать VCS, необязательно работать с кем-то в команде: историю версий можно и нужно вести, в том числе, и для себя.