Wie ist das Repository von Google?

62

Ich habe gehört, dass Google über ein riesiges privates (internes) Repository verfügt, in dem der gesamte Code gespeichert ist. Die Mitarbeiter haben Zugriff darauf, damit sie bei der Entwicklung von Dingen das Rad nicht neu erfinden müssen. Ich würde gerne mehr darüber erfahren!

Gibt es hier jemanden von Google, der es etwas genauer beschreiben kann, oder wissen Sie etwas mehr darüber? Ich interessiere mich hauptsächlich dafür, wie es organisiert ist und wie sie es einem Mitarbeiter erleichtern können, etwas in einer so riesigen Codebasis zu finden, wie es sein muss.

Ricket
quelle
2
Andere Unternehmen, die angeblich eine "Monorepo" verwenden, sind Facebook und Twitter. Würde gerne aus erster Hand von denen hören, die es erlebt haben.
Dennis

Antworten:

37

Hier ist ein Video zu erklären , wie es organisiert ist: Entwicklung an der Geschwindigkeit und das Ausmaß von Google

Ashish Kumar zeigt, wie Google es schafft, den Quellcode aller seiner Projekte über 2000 in einem einzigen Code-Trunk mit Hunderten von Millionen Codezeilen zu speichern, wobei mehr als 5.000 Entwickler auf dasselbe Repository zugreifen.

Giorgi
quelle
8
Ich weiß, dass die andere Antwort mehr positive Stimmen hat, aber dieses Video enthält alle Daten der anderen Antwort und noch einige mehr. Wenn Sie (der Leser) eine Zusammenfassung wünschen, lesen Sie die Antwort von Chris, andernfalls, wenn Sie eine Stunde Zeit haben, schauen Sie sich dieses Video an!
Ricket
63

Für die meisten verwendet Google ein Perforce- Setup. Es gibt jedoch interne Tools, mit denen Sie andere Tools wie git darauf aufbauen können. (Wie sie dies erreichen, weiß ich nicht.) Große Open-Source-Projekte wie Android und Chromium verfügen jedoch über separate Repositorys.

Auf Perforce basieren viele hervorragende interne Apps. Zum Beispiel gibt es Tools, mit denen das Erstellen, Testen und Überprüfen von Code geradezu magisch werden kann.

Teilweise aufgrund dieser "magischen" und Testkultur verwendet Google keine Verzweigungen. Jeder checkt in 'main' ein. Für jedes Projekt können Sie die Quelle anzeigen, sie erstellen und die Komponententests ohne spezielle Kenntnisse ausführen. Das ist riesig. Als ich bei Microsoft war, musste für jedes Produkt ein anderes Tier geopfert werden, um seine Tests durchführen zu können.

Darüber hinaus verfügt Google über einen unternehmensweiten Styleguide für die wichtigsten Sprachen, die wir verwenden. Wenn Sie Zugriff auf den Quellcode eines anderen Teams haben, was wäre der Sinn, wenn die Formatierung nur wackelig wäre!

Bei der Suche sind Sie möglicherweise mit der Google Codesuche vertraut . Es gibt eine spezielle Version davon, zusammen mit anderen streng geheimen Code-Suchwerkzeugen, die das Navigieren im Code erheblich vereinfachen.

Kurz gesagt, Google hat eine sehr ingenieurorientierte Kultur, die den Wert von Tools und die Produktivität von Entwicklern versteht.

Chris Smith
quelle
1
Ich verwende seit Jahren den Styleguide, auf den Sie sich beziehen. Es ist großartig! Aber ist das nicht für Open-Source-Projekte von Google? Gibt es einen anderen Leitfaden für interne Projekte?
Dennis
1
Das "streng geheime" Code-Suchtool wird unter github.com/google/kythe als Open Source bereitgestellt - es ist eine Teilmenge und hat keine Benutzeroberfläche (das Beispiel wird nicht mehr afaik gewartet), aber ich denke, sie sind Ziel ist es, Kythe so vollständig wie ihr internes Werkzeug zu machen.
MMLAC
3

Es ist riesig:

(Stand Januar 2015)

  • Gesamtzahl der Akten: 1 Milliarde
  • Anzahl der Quelldateien: 9 Millionen
  • Codezeilen: 2 Milliarden
  • Tiefe der Geschichte: 35 Millionen Commits
  • Größe des Inhalts: 86 Terabyte
  • Verpflichtungen pro Arbeitstag: 45 Tausend

Sie verwenden ein internes Tool namens Piper, das sich auf die Google-Infrastruktur stützt.

Quelle: Warum Google Milliarden von Codezeilen in einem einzigen Repository speichert

Benjamin Crouzier
quelle
@CodesInChaos Diese Information stammt aus dem Video in der Folie um 3:22 . Die Folie enthält weitere Erläuterungen zur Berechnung dieser Zahlen.
Benjamin Crouzier
Warten Sie, würde das nicht durchschnittlich 2 Zeilen pro Datei bedeuten?
Hashim