Каково хранилище Google?

62

Я слышал, что у Google есть гигантское частное (внутреннее) хранилище всего их кода, и его сотрудники имеют к нему доступ, так что при разработке вещей им не нужно изобретать велосипед. Я хотел бы знать больше об этом!

Есть ли здесь кто-нибудь из Google, который может описать это немного более подробно, или вы знаете немного больше об этом? Мне интересно знать в основном о том, как это организовано и как они могут облегчить сотруднику поиск чего-либо в такой гигантской кодовой базе, какой она должна быть.

Ricket
источник
2
Другие компании, которые по сообщениям используют "monorepo", являются Facebook и Twitter. Хотелось бы услышать из первых уст от тех, кто испытал это.
Деннис

Ответы:

37

Вот видео, объясняющее, как это организовано: Разработка со скоростью и масштабом Google

Ашиш Кумар рассказывает о том, как Google удается хранить исходный код всех своих проектов, более 2000, в единой ветви кода, содержащей сотни миллионов строк кода, и более 5000 разработчиков получают доступ к одному и тому же хранилищу.

Гиорги
источник
8
Я знаю, что у другого ответа больше голосов, но в этом видео есть все данные из другого ответа, а затем и некоторые. Если вы (читатель) хотите получить резюме, прочитайте ответ Криса, в противном случае, если у вас есть запасной час, посмотрите это видео!
Ricket
63

Для большинства Google использует настройку Perforce . Тем не менее, есть внутренние инструменты для работы над другими инструментами, такими как git. (Как они достигают этого, я не знаю.) Однако большие проекты с открытым исходным кодом, такие как Android и Chromium, имеют отдельные репозитории.

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

Отчасти из-за этой «волшебной» и тестовой культуры Google не использует ветвления. Все проверяются на «основной». Для любого проекта вы можете увидеть исходный код, собрать его и запустить модульные тесты без каких-либо специальных знаний. Это огромно. Когда я работал в Microsoft, каждый продукт требовал жертву другого животного, чтобы построить и запустить свои тесты.

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

Что касается поиска, вы можете быть знакомы с Google Code Search . Существует специальная версия этого, наряду с другими сверхсекретными инструментами поиска кода, которые значительно упрощают навигацию по коду.

Короче говоря, у Google очень инженерно-ориентированная культура, которая понимает ценность инструментов и продуктивность разработчиков.

Крис Смит
источник
1
Я использовал руководство по стилю, на которое вы ссылались годами, это здорово! Но разве это не для проектов Google с открытым исходным кодом? Есть ли другое руководство для внутренних проектов?
Денис
1
«Сверхсекретный» инструмент поиска кода делается открытым исходным кодом на github.com/google/kythe - это подмножество и не имеет пользовательского интерфейса (более того, пример больше не поддерживается), но я думаю, что их цель состоит в том, чтобы сделать Kythe таким же полным, как их внутренний инструмент.
mmlac
3

Это огромный:

(по состоянию на январь 2015 года)

  • Общее количество файлов: 1 миллиард
  • Количество исходных файлов: 9 миллионов
  • Строки кода: 2 миллиарда
  • Глубина истории: 35 миллионов коммитов
  • Размер контента: 86 терабайт
  • Комиссионных за рабочий день: 45 тысяч

Они используют внутренний инструмент под названием Piper, который полагается на инфраструктуру Google.

Источник: почему Google хранит миллиарды строк кода в одном репозитории

Бенджамин Крузье
источник
@CodesInChaos Эта информация взята из видео на слайде в 3:22 . Слайд содержит больше объяснений о том, как рассчитываются эти числа.
Бенджамин Крузье
Подождите, не значит ли это в среднем 2 строки на файл?
Хашим