Como é o repositório do Google?

62

Ouvi dizer que o Google tem um repositório privado (interno) gigante de todo o código e seus funcionários têm acesso a ele, de modo que, quando estão desenvolvendo coisas, não precisam reinventar a roda. Eu gostaria de saber mais sobre isso!

Existe alguém aqui no Google que possa descrevê-lo um pouco mais detalhadamente, ou você sabe um pouco mais sobre isso? Estou interessado em saber principalmente sobre como é organizado e como eles podem facilitar para que um funcionário encontre algo em uma base de código tão gigante quanto deve ser.

Ricket
fonte
2
Outras empresas que supostamente usam um "monorepo" são o Facebook e o Twitter. Gostaria de ouvir em primeira mão aqueles que experimentaram.
Dennis

Respostas:

37

Aqui está um vídeo explicando como está organizado: Desenvolvimento na velocidade e escala do Google

Ashish Kumar apresenta como o Google consegue manter o código fonte de todos os seus projetos, mais de 2000, em um único tronco de código contendo centenas de milhões de linhas de código, com mais de 5.000 desenvolvedores acessando o mesmo repositório.

Giorgi
fonte
8
Eu sei que a outra resposta tem mais votos positivos, mas este vídeo tem todos os dados da outra resposta e mais alguns. Se você (o leitor) deseja um resumo, leia a resposta de Chris; caso contrário, se você tiver uma hora de sobra, assista a este vídeo!
Ricket
63

Para a maioria, o Google usa uma configuração do Perforce . No entanto, existem ferramentas internas para fazer com que outras ferramentas, como o git, trabalhem em cima dela. (Como eles conseguem isso, eu não sei.) Projetos grandes de código aberto, como Android e Chromium, têm repositórios separados.

Construído sobre o Perforce, há muitos aplicativos internos estelares . Por exemplo, existem ferramentas para tornar as revisões de construção, teste e código nada menos que mágicas.

Em parte por causa dessa cultura 'mágica' e de teste, o Google realmente não usa ramificação. Todo mundo entra em 'main'. Para qualquer projeto, você pode ver a fonte, construí-la e executar os testes de unidade sem nenhum conhecimento especializado. Isso é imenso. Quando eu estava na Microsoft, cada produto exigia o sacrifício de um animal diferente para criar e executar os testes.

Além disso, o Google tem um guia de estilo para toda a empresa para os principais idiomas que usamos. se você tiver acesso ao código-fonte de outra equipe, qual seria o objetivo se a formatação fosse instável!

Quanto à pesquisa, você pode estar familiarizado com a Pesquisa de código do Google . Existe uma versão especial disso, juntamente com outras ferramentas de pesquisa de código ultrassecretas que facilitam a navegação no código.

Em suma, o Google tem uma cultura muito centrada em engenharia que entende o valor das ferramentas e a produtividade do desenvolvedor.

Chris Smith
fonte
11
Eu uso o guia de estilo que você mencionou há anos, é ótimo! Mas isso não é para projetos de código aberto originados pelo Google? Existe um guia diferente para projetos internos?
Dennis
11
A ferramenta de pesquisa de código "ultra-secreta" está sendo criada de código aberto em github.com/google/kythe - é um subconjunto e não possui interface do usuário (mais, o exemplo já não é mais mantido em destaque), mas acho que O objetivo é tornar a Kythe tão completa quanto sua ferramenta interna.
Mmlac
3

É enorme:

(a partir de janeiro de 2015)

  • Número total de arquivos: 1 bilhão
  • Número de arquivos de origem: 9 milhões
  • Linhas de código: 2 bilhões
  • Profundidade da história: 35 milhões de confirmações
  • Tamanho do conteúdo: 86 terabytes
  • Commits por dia útil: 45 mil

Eles usam uma ferramenta interna chamada Piper, que depende da infraestrutura do Google.

Fonte: Por que o Google armazena bilhões de linhas de código em um único repositório

Benjamin Crouzier
fonte
@CodesInChaos Essas informações são retiradas do vídeo no slide às 3:22 . O slide contém mais explicações sobre como esses números são calculados.
Benjamin Crouzier 23/09/16
Espere, isso não significaria uma média de 2 linhas por arquivo?
Hashim