amaslenn.github.com

View My GitHub Profile

Git news

Главной новостью мира гита в последние дни стал анонс от Microsoft о создании Git Virtual File System (GVFS). Подробнее тут.

На #gitmerge выступал представитель компании с рассказом о разработке. Основная проблема, которую они решают, это огромный размер репозитория, винда весит 270 Гб. Это чертовски много, если мы говорим про клонирование. Это слишком много даже для банальных checkout’а и status’а. Их решение - подгрузка файлов по требованию. Т.к. большинство разработчиков трогают весьма небольшой набор файлов, то качать все не нужно, достаточно подгружать только изменяемые файлы. Под капотом там гитовый sparse checkout и обновленные драйвера для ntfs. Минусов у подхода куча, одна только невозможность сделать поиск по исходникам чего стоит. Но ребята решают свою проблему, и, видимо, успешно.

Мне удалось пообщаться с докладчиком. На вопрос, “а чего ж вы svn не используете, там же легко можно только одну директорию скачать?” он ответил, что даже централизованный решения не масштабируются на такие объемы. Их предыдущее решение было основано на некоем внутреннем клоне Perforce (бедняги…), и проблем много.

Тем не менее, мне думается, что решение использовать гит это дань моде. Все современные разработчики его знают, порог вхождения новых людей благодаря этому снижается. Их решение действительно очень мне выкачивание отдельной директории в svn. Возможно, масштабировать его было бы проще. Но время диктует свои правила.

С проблемами больших репозиториев столкнулся и Facebook. Они своей монорепой (двумя на самом деле) давно хвалятся. Говорят “представьте себе самый большой репозиторий, который вы знаете, так вот, мы больше”. Т.е. больше 270 Гб? Но у них не гит, у них меркуриал (hg), причем всегда самый свежий, но с расширениями сверху.

Все свои наработки они выкладывают в open source. Причем штуки очень любопытные. Особенно absorb. Это такой автоматический amend, который может сам сделать интерактивный ребейз и вставить дополнения туда, где были сделаны основные изменения. Выглядит как магия высших ступеней, но все детерминировано (по словам представителей Facebook).

Еще у них есть сервис поверх hg/git, т.е. некий dvcs agnostic слой, работающий с любыми репозиториями. Из него они запрашивают разнообразные данные для множества других сервисов, работающих с кодом. Вот это решение полностью внутреннее. Полагаю, что это что-то вроде Kiln, дядя Джоэл это давно придумал.

При этом ребята говорят четко: вам меркуриал не нужен, используйте гит, все новые разработчики знают именно его.

Отличный был #gitmerge.