Системы контроля версий. Git

Доброго времени суток. Сегодня хотели бы рассказать немного о системах контроля версий проектов и каким образом они помогают не сойти с ума при разработке веб-приложений.

Системы контроля версий (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, необязательно работать с кем-то в команде: историю версий можно и нужно вести, в том числе, и для себя.