¿Cómo es el repositorio de Google?

62

Escuché que Google tiene un depósito privado (interno) gigante de todo su código y sus empleados tienen acceso a él para que cuando estén desarrollando cosas no tengan que reinventar la rueda. ¡Me gustaría saber más al respecto!

¿Hay alguien aquí de Google que pueda describirlo con un poco más de detalle, o sabes un poco más al respecto? Estoy interesado en saber principalmente cómo está organizado y cómo pueden facilitar que un empleado encuentre algo en una base de código tan gigante como debe ser.

Ricket
fuente
2
Otras compañías que supuestamente usan un "monorepo" son Facebook y Twitter. Me encantaría saber de primera mano de quienes lo han experimentado.
Dennis

Respuestas:

37

Aquí hay un video que explica cómo está organizado: Desarrollo a la velocidad y escala de Google

Ashish Kumar presenta cómo Google logra mantener el código fuente de todos sus proyectos, durante el año 2000, en un solo tronco de código que contiene cientos de millones de líneas de código, con más de 5,000 desarrolladores accediendo al mismo repositorio.

Giorgi
fuente
8
Sé que la otra respuesta tiene más votos a favor, pero este video tiene todos los datos de la otra respuesta y algo más. Si usted (el lector) quiere un resumen, lea la respuesta de Chris, de lo contrario, si tiene una hora libre, ¡vea este video!
Ricket 01 de
63

Para la mayoría Google utiliza una configuración de Perforce . Sin embargo, existen herramientas internas para que otras herramientas como git funcionen encima. (No sé cómo logran esto) . Sin embargo , los proyectos grandes de código abierto como Android y Chromium tienen repositorios separados.

Construido sobre Perforce hay muchas aplicaciones internas estelares . Por ejemplo, existen herramientas para hacer que la construcción, las pruebas y las revisiones de códigos sean mágicas.

En parte debido a esta cultura de 'magia' y pruebas, Google realmente no usa la ramificación. Todo el mundo se registra en 'main'. Para cualquier proyecto, puede ver la fuente, construirla y ejecutar las pruebas unitarias sin ningún conocimiento especializado. Esto es enorme Cuando estaba en Microsoft, cada producto requería el sacrificio de un animal diferente para construir y ejecutar sus pruebas.

Además, Google tiene una guía de estilo de toda la empresa para los principales idiomas que utilizamos. Si tiene acceso al código fuente de otro equipo, ¿cuál sería el punto si el formato es inestable?

En cuanto a la búsqueda, es posible que esté familiarizado con Google Code Search . Hay una versión especial de eso, junto con otras herramientas de búsqueda de códigos de alto secreto que hacen que navegar por el código sea mucho más fácil.

En resumen, Google tiene una cultura muy centrada en la ingeniería que comprende el valor de las herramientas y la productividad del desarrollador.

Chris Smith
fuente
1
He estado usando la guía de estilo a la que hace referencia durante años, ¡es genial! ¿Pero no es eso para los proyectos de código abierto originados en Google? ¿Existe una guía diferente para proyectos internos?
Dennis
1
La herramienta de búsqueda de códigos "de alto secreto" se está convirtiendo en código abierto en github.com/google/kythe : es un subconjunto y no tiene interfaz de usuario (además, el ejemplo ya no se mantiene afaik) pero creo que su El objetivo es hacer que Kythe sea tan completa como su herramienta interna.
mmlac
3

Es enorme:

(a partir de enero de 2015)

  • Número total de archivos: mil millones
  • Número de archivos fuente: 9 millones
  • Líneas de código: 2 mil millones
  • Profundidad de la historia: 35 millones de confirmaciones
  • Tamaño del contenido: 86 terabytes
  • Compromisos por jornada laboral: 45 mil

Utilizan una herramienta interna llamada Piper, que se basa en la infraestructura de Google.

Fuente: por qué Google almacena miles de millones de líneas de código en un único repositorio

Benjamin Crouzier
fuente
@CodesInChaos Esta información está tomada del video en la diapositiva a las 3:22 . La diapositiva contiene más explicaciones sobre cómo se calculan esos números.
Benjamin Crouzier
Espera, ¿eso no significaría un promedio de 2 líneas por archivo?
Hashim