Рейтинги и обзоры
digital-рынка
Рейтинг систем контроля версий 2016 Рейтинг систем контроля версий 2016

Рейтинг систем контроля версий 2016

Системы управления версиями, совместная разработка

21 апреля 2016

# Название Год Тип
1 0
GIT
2005
распределенная
2 0
2000
централизованная
$ Directual 2016 Low-code платформа — фреймворк для быстрой разработки
3 0
2005
распределенная
4 0
1990
централизованная
5 0
2005
централизованная

Среди других систем контроля версий при обработке данных респондентов рассматривались Bazaar и Perforce.

О рейтинге

Рейтинг систем контроля версий выпускается Тэглайном впервые и сформирован на основе анкетирования (проводилось с августа 2014 по апрель 2016 года) 360+ digital-агентств с продакшном и/или клиентским офисом в России: респондентам предлагалось выбрать один или несколько вариантов ответа на вопрос «Какие системы контроля версий вы используете?».

Часть решений респонденты добавили сами (а не выбрали из уже существующих вариантов), например, Team Foundation Server, который вошел в Топ вместе с остальными системами контроля версий из предефайнд-списка.

Динамика приводится по сравнению с данными, полученными Тэглайном за период с мая 2013 по август 2014 года.

Комментарии экспертов

Николай Фетюхин
MST, Генеральный директор
Иван Немытченко
GitLab, Developer Advocate
Александр Макарчук
qb, Генеральный директор
Петр Урваев
SimbirSoft, Руководитель Java-департамента

1. Каков главный мотив использования системы контроля версий?

Николай Фетюхин, MST
Вопрос был бы уместен лет 25 назад. Уже лет 10 использование системы контроля версий — это обязательная вещь для любой команды. Общее, удобное, безопасное хранение исходных кодов с историей изменений, коллективное владение кодом, разделение задач и функционала приложения внутри команды. А также автоматизация сборок, развертывания и вообще непрерывная интеграция.

Иван Немытченко, GitLab
Облегчить себе жизнь при совместной разработке программных продуктов.

Александр Макарчук, qb
Оптимизация командной разработки.

Петр Урваев, SimbirSoft
В ходе разработки код проекта активно меняется. При этом нужно вести учет того, что уже было сделано, и согласовывать действия отдельных участников по одновременному изменению кода так, чтобы доработки участников проекта учитывали все ранее сделанные правки других участников. Система контроля версий позволяет автоматизировать этот процесс.

2. Какие факторы влияют на выбор системы контроля версий?

Николай Фетюхин, MST
Поддержка ядра системы контроля версий и ее конкретной реализации, знакомство с ней команды. Чаще всего используется одна система на все проекты. Исключениями могут быть, например, требования заказчика.

Иван Немытченко, GitLab
Популярность той или иной системы, из которой следует уже все остальное: поддержка в приложениях и сервисах, количество и качество документации, наличие эксперта «под боком» и т.п.

Александр Макарчук, qb
В нашем случае выбор основывается на популярности системы контроля версий и уровне владения ей разработчиками.

Петр Урваев, SimbirSoft
В первую очередь — соответствие возможностей системы контроля версий принятому в команде процессу разработки. Во вторую очередь, то с какой системой контроля версий привычнее работать участникам проекта.

3. Как внедрить использование системы контроля версий в команде?

Николай Фетюхин, MST
Сейчас даже современные студенты уже выпускаются с общим пониманием, для чего необходимы системы контроля версий, поэтому вопрос внедрения не совсем корректен. Обычно все проекты просто по умолчанию начинаются с создания репозитория. Если же в общем случае, то следует поговорить с командой, выяснить почему системы контроля версий на проекте нет (изредка бывают различные крайне специфические случаи), и если проблемы преодолимы, то провести пару семинаров внутри команды по конкретной системе контроля версий (если требуется) и запускаться.

Иван Немытченко, GitLab
Дать им возможность поработать без системы контроля версий, чтобы прочувствовали всю боль. Потом «подсунуть» им cheatsheet по Git-у, и они сами все выучат и внедрят. Но так можно работать со школьниками и студентами. У зрелых разработчиков обычно этот вопрос не стоит.

Александр Макарчук, qb
Медленно, но верно каждый приходит к этому самостоятельно.

Петр Урваев, SimbirSoft
В большинстве современных проектов необходимость использования системы контроля версий не вызывает вопросов. При обучении работе с ней достаточно настроить ее для удобной работы и прочитать короткую лекцию об основных возможностях используемой системы контроля версий с приведением примеров использования.

4. Благодаря чему Git стал стандартом в мире систем контроля версий? Сможет ли его кто-то сместить с лидирующего положения?

Николай Фетюхин, MST
Git изначально содержал несколько полезных вещей, таких как локальные коммиты, а также решил большое количество проблем со слиянием веток, которыми был богат предыдущий законодатель мод — Subversion (SVN). С самого начала он боролся за популярность с Mercurial (Hg), который в некоторых аспектах проще, но в итоге вырвался в лидеры.

Иван Немытченко, GitLab
Благодаря тому, что Линус Торвальдс атаковал проблему распределенной разработки с правильной стороны, учтя недостатки систем-предшественников. Сместить? А зачем?

Александр Макарчук, qb
Благодаря тому, что Git — молодец. Очень долго никто его не сместит.

Петр Урваев, SimbirSoft
Основное преимущество Git — развитость инструментов для работы с ним и возможность хранения в нем результатов работы по нескольким параллельно открытым задачам так, что промежуточные результаты не влияют друг на друга, и при этом окончательные результаты можно достаточно легко скомбинировать в одну итоговую версию приложения. Также немаловажную роль во всеобщей популярности Git’a в мире CVS сыграл ресурс GitHub, на котором размещены тысячи репозиториев на различных языках.

5. Что не устраивает разработчиков в Git? Почему некоторые выбирают другие менее популярные решения?

Николай Фетюхин, MST
Единственный значимый для нас недостаток Git — это некоторые проблемы с отслеживанием изменений: ветки могут быть удалены, и может остаться только merge-коммит. Это связано во многом с тем, что у Git ветки привязаны к коммитам. Также у Git более крутая кривая обучения, чем у упомянутого выше Mercurial или Subversion.

Александр Макарчук, qb
В рамках наших задач всем устраивает.

Петр Урваев, SimbirSoft
Git достаточно удобен, но требует изучения (теми, кто его еще не знает) и активных действий по переходу на него, поэтому некоторые команды предпочитают оставаться на используемых ими системах контроля версий. Также выбор системы контроля версий может быть определен используемыми инструментами разработки.

6. Насколько распространено использование систем контроля версий для управления другими файлами, а не только кодом?

Николай Фетюхин, MST
В настоящее время повсеместно. Те же облачные системы вроде One Drive, Яндекс.Диск, Dropbox и Google Drive в основе содержат идеологию, повторяющую системы контроля версий.

На практике использование обычных систем контроля версий для хранения документов распространено, но не слишком, тонкости возникают с расчетом изменений, так как большинство современных распространенных форматов документов являются бинарными, и их наборы изменений не человекочитаемы.

Александр Макарчук, qb
Постоянно используется.

Петр Урваев, SimbirSoft
Системы контроля версий нацелены в первую очередь на работу с большим количеством небольших файлов, что используется в основном в разработке. Использование подобных систем для файлов нетекстовых форматов (бинарных), как правило, неэффективно, а в некоторых случаях и вовсе невозможно. Поэтому для хранения других файлов используются обычно специализированные системы, адаптированные под работу с определенными форматами данных.

Паспорт

360+ респондентов
30 средний штат компании
Количество сервисов, используемых в компании
От 1 до 4
1,5 в среднем
Глоссарий
Система контроля версий — это система, которая регистрирует все изменения в файлах, а в дальнейшем позволяет вернуться к их более ранним версиям и определить, кем и когда были сделаны конкретные изменения.

В централизованных системах контроля версий (CVS, Subversion, Perforce) есть центральный сервер, на котором хранятся все данные, и ряд клиентов, получающих из него копии файлов. В таких системах всегда понятно, кто чем занимается в проекте, и их проще администрировать.

Распределенные системы контроля версий (Git, Mercurial, Bazaar) вместо традиционной клиент-серверной модели используют распределенную, то есть все изменения хранятся в локальном хранилище на компьютере и при необходимости синхронизируются с другими. В этом случае устраняется зависимость от центрального сервера, можно вести работу даже без сетевого соединения с ним.

Подписаться на релизы и анонсы

Подписаться на релизы и анонсы

Мне это нравится