Comment est le référentiel de Google?

62

J'ai entendu dire que Google dispose d'un référentiel privé (interne) géant de l'ensemble de son code et que ses employés y ont accès. Ainsi, lorsqu'ils développent des outils, ils n'ont pas à réinventer la roue. J'aimerais en savoir plus à ce sujet!

Y a-t-il quelqu'un ici de Google qui peut le décrire un peu plus en détail ou en savez-vous un peu plus? Je voudrais surtout savoir comment cela est organisé et comment il peut être facile pour un employé de trouver quelque chose dans une base de code aussi gigantesque qu'elle doit l'être.

Rachitisme
la source
2
Parmi les autres entreprises qui utiliseraient un "monorepo" sont Facebook et Twitter. J'adorerais avoir des nouvelles de ceux qui l'ont expérimenté.
Dennis

Réponses:

37

Voici une vidéo expliquant son organisation: Développement à la vitesse et à l’échelle de Google

Ashish Kumar explique comment Google parvient à conserver le code source de tous ses projets, plus de 2 000, dans une seule ligne de code contenant des centaines de millions de lignes de code, avec plus de 5 000 développeurs accédant au même référentiel.

Giorgi
la source
8
Je sais que l'autre réponse a plus de votes positifs, mais cette vidéo contient toutes les données de l'autre réponse, puis d'autres. Si vous (le lecteur) voulez un résumé, lisez la réponse de Chris. Sinon, si vous avez une heure à perdre, regardez cette vidéo!
Ricket
63

Pour la plupart, Google utilise une configuration Perforce . Cependant, il existe des outils internes permettant d’utiliser d’autres outils tels que git. (Je ne sais pas comment ils y parviennent.) Les grands projets open-source tels qu'Android et Chromium ont cependant des référentiels distincts.

Perforce repose sur de nombreuses applications internes stellaires . Par exemple, il existe des outils pour rendre la construction, les tests et les révisions de code rien de moins que magique.

En partie à cause de cette "magie" et de cette culture de test, Google n'utilise pas vraiment les branches. Tout le monde vérifie dans «principal». Pour tout projet, vous pouvez voir la source, la construire et exécuter les tests unitaires sans connaissances particulières. C'est énorme. Quand j'étais chez Microsoft, chaque produit nécessitait le sacrifice d'un animal différent pour construire et exécuter leurs tests, il était hors de question.

En outre, Google propose un guide de style à l’ échelle de la société pour les principales langues que nous utilisons. Si vous avez accès au code source d'une autre équipe, à quoi servirait le formatage?

En ce qui concerne la recherche, vous connaissez peut-être Google Code Search . Il existe une version spéciale de celle-ci, ainsi que d'autres outils de recherche de code très secrets qui facilitent la navigation dans le code.

En bref, Google a une culture très centrée sur l’ingénierie qui comprend la valeur des outils et la productivité des développeurs.

Chris Smith
la source
1
J'utilise le guide de style auquel vous faites référence depuis des années, c'est génial! Mais n'est-ce pas le cas pour les projets open source créés par Google? Existe-t-il un guide différent pour les projets internes?
Dennis
1
L’outil de recherche de code "top secret" est en train de devenir open source sur github.com/google/kythe - c’est un sous-ensemble qui n’a pas d’UI (plus, l’exemple n’est plus maintenu tel quel), mais je pense que leur L’objectif est de rendre Kythe aussi complet que son outil interne.
mmlac
3

C'est énorme:

(à partir de janvier 2015)

  • Nombre total de fichiers: 1 milliard
  • Nombre de fichiers source: 9 millions
  • Lignes de code: 2 milliards
  • Profondeur de l'histoire: 35 millions de commits
  • Taille du contenu: 86 téraoctets
  • Engagements par jour ouvrable: 45 000

Ils utilisent un outil interne appelé Piper, reposant lui-même sur une infrastructure google.

Source: Pourquoi Google stocke des milliards de lignes de code dans un même référentiel

Benjamin Crouzier
la source
@CodesInChaos Cette information est tirée de la vidéo dans la diapositive à 3:22 . La diapositive contient plus d'explications sur la manière dont ces chiffres sont calculés.
Benjamin Crouzier
Attendez, cela ne veut-il pas dire en moyenne 2 lignes par fichier?
Hashim