О системах контроля версиями

Юрий "yurembo" Язев

независимый игродел


Недавно мне понадобилось выбрать систему контроля версиями для крупного программного проекта. Я определил для нее следующий список требований:

    1) Хранение репозитория в облаке;
    2) Приватный репозиторий;
    3) Неограниченное увеличение числа пользователей;
    4) Неограниченное увеличение размера репозитория;

Казалось бы, в настоящее время полно систем контроля версиями, однако при близком знакомстве с их документацией важные моменты становятся туманными, а порой противоречивыми. Мне предстояло сделать выбор из трех систем: BitBucket, GitHub, GitLab. Потом добавилась еще PlasticSCM, забегая вперед, я на ней и остановился
Для своих личных проектов я всегда использовал BitBucket. Ниже картинка с расценками с сайта разработчиков:


Для бесплатного пользования BitBucket предлагает 2GB дискового пространства на неограниченное количество репозиториев. Замечу, возможность создавать приватные репозитории у BitBucket появилась значительно раньше, чем у GitHub, во много из-за этого я ей и пользовался. Еще у Atlassian (разработчика BitBucket) есть прекрасный Git-клиент SourceTree с невероятно удобным графическим интерфейсом. Его можно использовать с любой git-системой. В то же время план на BitBucket не предполагает более 10ГБ дискового пространства ни за какие деньги, то есть это максимум при оплате $6 за пользователя в месяц. Таким образом, данная система не соответствует требованиям. Идем дальше.

Следующий план для GitHub:


Отсюда следует, что в бесплатном плане для закрытых репозиториев выделяется всего 500МБ дискового пространства. При этом для публичных — неограниченное пространство (хотя в документации написано: не более 100ГБ). Самый дорогой план — Enterprise предполагает оплату $21 в месяц за одного разработчика, участвующего в проекте, при этом под закрытые репозитории дается 50ГБ. Вроде, размер просто гигантский, но современные интерактивные программные продукты с легкостью переплевывают этот рубеж. План GitHub One очевидно предназначен для особо одаренных корпоративных пользователей, поэтому я не стал его рассматривать.

Похоже, GitLab для всех своих планов выделяет по 15ГБ для размещения закрытых репозиториев. Даже для бесплатного плана. Это мне в нем очень понравилось. Поэтому я собираюсь перейти на него для хранения личных проектов. Тем не менее, ни один план не предполагает увеличение дискового пространства, поэтому для нашего проекта GitLab не подходит.


Гораздо лучше дела обстоят у PlasticSCM:


Если в проекте участвуют 3 или меньше разработчиков, и размер репозитория не превышает 5ГБ, платить ничего не надо. Если количество разработчиков увеличивается, то за каждого разработчика надо платить $7 в месяц. Когда размер репозитория превышает 5ГБ, стоимость дискового пространства в облаке пересчитывается не на пользователя, а на команду. Таким образом, пока размер не превышает 15ГБ, стоимость составляет $5 в месяц. Эти 5 долларов прибавляются к оплате за количество пользователей: $7 за человека. Если репозиторий вырастает более 15ГБ, плата будет равняться $20 в месяц. Когда репозиторий превысит отметку в 100ГБ, то за каждые дополнительные 50ГБ пространства с команды будет взиматься дополнительные $7 в месяц. При всем при этом, если какой-то разработчик в команде в течение месяца ничего не коммитил и не скачивал из облака, в таком случае за него платить ничего не надо.


PlasticSCM основан не на Git, однако полностью с ним совместим. В PlasticSCM входят два инструмента: собственно, сам PlasticSCM, ориентированный на работу с кодом клиент, позволяющий скачивать и заливать файлы с исходным кодом, проводить ревизии, решать коллизии и прочее. Второй тулзой является Plastic Gluon – клиент, предназначенный для дизайнеров, художников и других моделлеров. Он избавлен от нагромождений в интерфейсе своего собрата и позволяет только пулить и пушить в облако.


Пушинг в GitLab по протоколу https


Рассмотрим еще одну вещь. Если после создания репозитория на сайте GitLab, скопировать предложенный URL к облаку в git-клиент и с помощью него запушить реп с локальной машины, произойдет ошибка. Чтобы её исправить и успешно запушить свои данные, надо предлагаемый URL модифицировать таким образом:

https://LOGIN:PASSWORD@gitlab.com/LOGIN/PROJECT.git/

Где:
    • LOGIN – логин для GitLab
    • PASSWORD – пароль для GitLab
    • PROJECT – название проекта

© 2016 - 2021 yurembo