Com'è il repository di Google?


62

Ho sentito che Google ha un gigantesco repository privato (interno) di tutto il loro codice e i loro dipendenti hanno accesso ad esso in modo che quando stanno sviluppando cose non debbano reinventare la ruota. Mi piacerebbe saperne di più!

C'è qualcuno qui da Google che può descriverlo in modo un po 'più dettagliato o ne conosci un po' di più? Sono interessato a sapere principalmente come è organizzato e come possono rendere facile per un dipendente trovare qualcosa in una base di codice così grande come deve essere.


2
Altre società che secondo come riferito usano un "monorepo" sono Facebook e Twitter. Mi piacerebbe sentire in prima persona da coloro che l'hanno vissuto.
Dennis,

Risposte:


37

Ecco un video che spiega come è organizzato: Sviluppo alla velocità e alla scala di Google

Ashish Kumar presenta come Google riesce a mantenere il codice sorgente di tutti i suoi progetti, oltre 2000, in un unico trunk di codice contenente centinaia di milioni di righe di codice, con oltre 5.000 sviluppatori che accedono allo stesso repository.


8
So che l'altra risposta ha più voti, ma questo video ha tutti i dati dell'altra risposta e poi alcuni. Se tu (il lettore) desideri un riassunto, leggi la risposta di Chris, altrimenti se hai un'ora da perdere guarda questo video!
Ricket,

63

Per la maggior parte Google utilizza una configurazione di Perforce . Tuttavia, ci sono strumenti interni per far funzionare altri strumenti come git. (Come riescono a farlo, non lo so.) Grandi progetti open source come Android e Chromium hanno comunque repository separati.

Sulla base di Perforce sono presenti molte app interne stellari . Ad esempio, ci sono strumenti per rendere la costruzione, i test e le recensioni di codice a dir poco magici.

In parte a causa di questa cultura della "magia" e dei test, Google non utilizza realmente le ramificazioni. Tutti fanno il check in "main". Per qualsiasi progetto è possibile visualizzare la fonte, crearla ed eseguire i test unitari senza alcuna conoscenza specializzata. Questo è enorme. Quando ero in Microsoft, ogni prodotto richiedeva il sacrificio di un animale diverso per costruire ed eseguire i loro test sarebbe stato fuori discussione.

Inoltre, Google ha una guida di stile a livello aziendale per le principali lingue che utilizziamo. se hai accesso al codice sorgente di un'altra squadra, quale sarebbe il punto se la formattazione fosse tutta traballante!

Per quanto riguarda la ricerca, potresti avere familiarità con Ricerca codice Google . Esiste una versione speciale di questo, insieme ad altri strumenti di ricerca del codice top-secret che rendono molto più semplice la navigazione del codice.

In breve, Google ha una cultura incentrata sull'ingegneria che comprende il valore degli strumenti e la produttività degli sviluppatori.


1
Sto usando la guida di stile a cui hai fatto riferimento per anni, è fantastico! Ma non è questo per i progetti open source originati da Google? Esiste una guida diversa per i progetti interni?
Dennis,

1
Lo strumento di ricerca del codice "top-secret" è stato reso open source su github.com/google/kythe - è un sottoinsieme e non ha UI (più, l'esempio uno non è più mantenuto afaik) ma penso che il loro l'obiettivo è rendere Kythe completo quanto il loro strumento interno.
mmlac,

3

È enorme:

(a gennaio 2015)

  • Numero totale di file: 1 miliardo
  • Numero di file di origine: 9 milioni
  • Linee di codice: 2 miliardi
  • Profondità della storia: 35 milioni di commit
  • Dimensione del contenuto: 86 terabyte
  • Impegni per giornata lavorativa: 45 mila

Usano uno strumento interno chiamato Piper, che si basa sull'infrastruttura di Google.

Fonte: perché Google memorizza miliardi di righe di codice in un singolo repository


@CodesInChaos Queste informazioni sono tratte dal video nella diapositiva alle 3:22 . La diapositiva contiene ulteriori spiegazioni su come vengono calcolati quei numeri.
Benjamin Crouzier,

Aspetta, ciò non significherebbe una media di 2 righe per file?
Hashim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.