Seperti apa repositori Google?

62

Saya mendengar Google memiliki repositori pribadi (internal) raksasa dari semua kode mereka dan karyawan mereka memiliki akses ke sana sehingga ketika mereka mengembangkan hal-hal yang tidak harus mereka temukan kembali. Saya ingin tahu lebih banyak tentang itu!

Adakah orang di sini dari Google yang dapat menjelaskannya dengan sedikit lebih detail, atau Anda tahu lebih banyak tentangnya? Saya tertarik mengetahui terutama tentang bagaimana itu diatur dan bagaimana mereka dapat membuatnya mudah bagi karyawan untuk menemukan sesuatu dalam basis kode raksasa seperti yang seharusnya.

Ricket
sumber
2
Perusahaan lain yang dilaporkan menggunakan "monorepo" adalah Facebook dan Twitter. Akan sangat senang mendengar langsung dari mereka yang pernah mengalaminya.
Dennis

Jawaban:

37

Berikut adalah video yang menjelaskan bagaimana ini diatur: Pengembangan dengan Kecepatan dan Skala Google

Ashish Kumar menyajikan bagaimana Google mengelola untuk menjaga kode sumber semua proyeknya, lebih dari 2000, dalam satu kode batang yang berisi ratusan juta baris kode, dengan lebih dari 5.000 pengembang mengakses repositori yang sama.

Giorgi
sumber
8
Saya tahu jawaban lain memiliki lebih banyak upvotes, tetapi video ini memiliki semua data dari jawaban lainnya dan kemudian beberapa. Jika Anda (pembaca) menginginkan ringkasan, bacalah jawaban Chris, jika tidak, Anda punya waktu satu jam untuk menonton video ini!
Ricket
63

Untuk sebagian besar Google menggunakan pengaturan Perforce . Namun, ada alat internal untuk mendapatkan alat lain seperti git untuk bekerja di atasnya. (Bagaimana mereka mencapai ini saya tidak tahu.) Proyek-proyek besar, sumber terbuka seperti Android dan Chromium memiliki repositori yang terpisah.

Dibangun di atas Perforce banyak aplikasi internal bintang . Misalnya, ada alat untuk membuat bangunan, pengujian, dan ulasan kode yang tidak kalah ajaib.

Sebagian karena 'sihir' dan budaya pengujian ini, Google tidak benar-benar menggunakan percabangan. Semua orang masuk ke 'utama'. Untuk proyek apa pun Anda dapat melihat sumbernya, membangunnya, dan menjalankan tes unit tanpa pengetahuan khusus. Ini sangat besar. Ketika saya masih di Microsoft, setiap produk membutuhkan pengorbanan hewan yang berbeda untuk membangun dan menjalankan tes mereka akan keluar dari pertanyaan.

Selain itu, Google memiliki panduan gaya di seluruh perusahaan untuk bahasa utama yang kami gunakan. jika Anda memiliki akses ke kode sumber tim lain, apa gunanya jika pemformatan semuanya tidak berguna!

Sedangkan untuk pencarian, Anda mungkin akrab dengan Pencarian Kode Google . Ada versi khusus dari itu, bersama dengan alat pencarian kode rahasia lainnya yang membuat navigasi kode lebih mudah.

Singkatnya, Google memiliki budaya yang sangat berfokus pada teknik yang memahami nilai alat dan produktivitas pengembang.

Chris Smith
sumber
1
Saya telah menggunakan panduan gaya yang Anda referensikan selama bertahun-tahun, sungguh hebat! Tetapi bukankah itu untuk proyek sumber terbuka yang berasal dari Google? Apakah ada panduan berbeda untuk proyek internal?
Dennis
1
Alat pencarian kode "sangat rahasia" sedang dibuat open source di github.com/google/kythe - ini adalah subset dan tidak memiliki UI (lagi, contoh satu tidak lagi dipelihara afaik) tapi saya pikir mereka tujuannya adalah untuk membuat Kythe selengkap alat internal mereka.
mmlac
3

Ini sangat besar:

(per Januari 2015)

  • Total jumlah file: 1 miliar
  • Jumlah file sumber: 9 juta
  • Baris kode: 2 miliar
  • Kedalaman sejarah: 35 juta komitmen
  • Ukuran konten: 86 terabyte
  • Komit per hari kerja: 45 ribu

Mereka menggunakan alat internal yang disebut Piper, itu sendiri mengandalkan infrastruktur google.

Sumber: Mengapa Google Menyimpan Miliaran Baris Kode dalam Satu Tempat Penyimpanan

Benjamin Crouzier
sumber
@CodesInChaos Info ini diambil dari video pada slide jam 3:22 . Slide berisi lebih banyak penjelasan tentang bagaimana angka-angka itu dihitung.
Benjamin Crouzier
Tunggu, bukankah itu berarti rata-rata 2 baris per file?
Hashim