Jak wygląda repozytorium Google?


62

Słyszałem, że Google ma gigantyczne prywatne (wewnętrzne) repozytorium całego swojego kodu, a ich pracownicy mają do niego dostęp, dzięki czemu, gdy rozwijają rzeczy, nie muszą wymyślać na nowo koła. Chciałbym dowiedzieć się więcej na ten temat!

Czy jest tu ktoś z Google, który mógłby opisać to bardziej szczegółowo, czy wiesz coś więcej na ten temat? Chciałbym wiedzieć głównie o tym, jak to jest zorganizowane i jak może ułatwić pracownikowi znalezienie czegoś w tak ogromnej bazie kodów, jak to musi być.


2
Inne firmy, które podobno używają „monorepo”, to Facebook i Twitter. Bardzo chciałbym usłyszeć z pierwszej ręki tych, którzy tego doświadczyli.
Dennis

Odpowiedzi:


37

Oto wideo wyjaśniające, jak to jest zorganizowane: Rozwój w szybkim tempie i na skalę Google

Ashish Kumar przedstawia, w jaki sposób Google udaje się przechowywać kod źródłowy wszystkich swoich projektów, ponad 2000, w jednym pniu kodu zawierającym setki milionów linii kodu, z ponad 5000 programistów uzyskujących dostęp do tego samego repozytorium.


8
Wiem, że druga odpowiedź ma więcej głosów pozytywnych, ale ten film zawiera wszystkie dane z drugiej odpowiedzi, a następnie kilka. Jeśli (czytelnik) chcesz podsumować, przeczytaj odpowiedź Chrisa, w przeciwnym razie, jeśli masz godzinę na obejrzenie tego filmu!
Ricket

63

W większości przypadków Google używa konfiguracji Perforce . Istnieją jednak wewnętrzne narzędzia umożliwiające działanie innych narzędzi, takich jak git. (Nie wiem, jak to osiągają). Duże projekty typu open source, takie jak Android i Chromium, mają jednak osobne repozytoria.

Zbudowany na szczycie Perforce wiele gwiazd aplikacjach wewnętrznych. Na przykład istnieją narzędzia, dzięki którym budowanie, testowanie i przeglądanie kodu jest niczym magicznym.

Częściowo z powodu tej „magii” i kultury testowania, Google tak naprawdę nie używa rozgałęzień. Wszyscy meldują się w „głównym”. Dla każdego projektu możesz zobaczyć źródło, zbudować je i uruchomić testy jednostkowe bez specjalistycznej wiedzy. To jest ogromne. Kiedy pracowałem w Microsoft, każdy produkt wymagał poświęcenia innego zwierzęcia, aby zbudować i uruchomić ich testy nie wchodziło w rachubę.

Ponadto Google ma przewodnik po stylu dla głównych języków, których używamy. jeśli masz dostęp do kodu źródłowego innego zespołu, jaki byłby sens, gdyby całe formatowanie było nieporadne!

Jeśli chodzi o wyszukiwanie, być może znasz Google Code Search . Istnieje specjalna wersja tego, wraz z innymi ściśle tajnymi narzędziami do wyszukiwania kodu, które znacznie ułatwiają nawigację.

Krótko mówiąc, Google ma bardzo skoncentrowaną na inżynierii kulturę, która rozumie wartość narzędzi i produktywność programistów.


1
Od lat korzystam z przewodnika po stylu, jest świetny! Ale czy nie dotyczy to projektów open source pochodzących od Google? Czy istnieje inny przewodnik dla projektów wewnętrznych?
Dennis

1
Ściśle tajne” narzędzie do wyszukiwania kodu jest udostępniane jako open source na github.com/google/kythe - jest to podzbiór i nie ma interfejsu użytkownika (już więcej, przykład ten nie jest już utrzymywany po afaik), ale myślę, że ich celem jest, aby Kythe było tak kompletne, jak ich wewnętrzne narzędzie.
mmlac

3

Jest ogromny:

(od stycznia 2015 r.)

  • Łączna liczba plików: 1 miliard
  • Liczba plików źródłowych: 9 milionów
  • Linie kodu: 2 miliardy
  • Głębia historii: 35 milionów zobowiązań
  • Rozmiar zawartości: 86 terabajtów
  • Zobowiązania na dzień roboczy: 45 tys

Korzystają z wewnętrznego narzędzia o nazwie Piper, które samo polega na infrastrukturze Google.

Źródło: Dlaczego Google przechowuje miliardy linii kodu w jednym repozytorium


@CodesInChaos Informacje te pochodzą z filmu na slajdzie o 3:22 . Slajd zawiera więcej objaśnień dotyczących sposobu obliczania tych liczb.
Benjamin Crouzier

Zaraz, czy nie oznaczałoby to średnio 2 wierszy na plik?
Hashim
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.