Перейти к основному содержимому

Arc и единый репозиторий

·359 слов·2 минут
Оригинал опубликован в Telegram

Еще в универе я сохранял копии файлов, чтобы не потерять драгоценные правки. В итоге в папке появлялись файлы вида “lab2.doc”, “lab-final.doc” и даже “lab-final-last2.doc”!

Потом я узнал о существовании систем контроля версий, решающих задачу сохранения истории более изящно и технологично.

Когда я пришел в Яндекс, компания уже перешла с устаревшей CVS на Svn. Тогда у каждой команды в распоряжении было по 1-2 репозитория, а сделанные коммиты читали через почтовую рассылку. Ревью кода проводилось ответом на письмо с коммитом :)

Мы с моим руководителем хотели шагнуть в будущее — начать использовать Git с удобными локальными ветками. Чтобы не мигрировать всю команду, мы стали использовать git-svn.

Через какое-то время вся компания начала использовать Git. У нас даже появились свои внутренние инстансы GitHub и Bitbucket. Количество репозиториев стало расти, как и транзакционные издержки по интеграции кода.

Также стали появляться крупные репозитории с огромной по размеру историей. Скачивались такие репозитории целую вечность!

Во всех крупных компаниях рано или поздно появляется монорепозиторий. Яндекс не стал исключением, и у нас появилась Аркадия.

Можно долго спорить о плюсах и минусах монорепозитория. Это холиварная тема, и я не буду вас убеждать, что монорепозиторий — “серебряная пуля” для решения всех проблем. О бенефитах монорепозитория можно почитать на сайте monorepo.tools.

Для работы с Аркадией мы используем свою систему контроля версий под названием — Arc.

Arc — легковесная система контроля версий для монорепозитория:

  • данные хранятся в облаке
  • используется виртуализация рабочей копии вместо скачивания всех данных репозитория.

Такой подход позволяет хранить на диске только локальные изменения для повышения скорости работы.

Интерфейс Arc очень похож на Git. Если у разработчика был опыт работы с Git, то он без труда разберется с Arc. Доступны локальные ветки, стейджинг и быстрый просмотр истории коммитов. И это при том, что в этот репозиторий коммитит почти весь Яндекс!

Arc — yet another система контроля версий, свой велосипед. Но это очень хороший велосипед, который верой и правдой служит нам каждый день.

Несколько лет назад в одной иностранной социальной сети, похожей на VK, было два монорепозитория: весь код и фронтенд. В Аркадии лежит и код бекенда, и код фронтенда. Работать с этим кодом можно быстро и удобно. И с каждым годом становится все лучше ;)