Sunting: tidak seperti beberapa pertanyaan serupa seperti Memindahkan repo multi-GB SVN ke Git atau /programming/540535/managing-large-binary-files-with-git Skenario saya tidak melibatkan beberapa sub proyek yang dapat dengan mudah dikonversi menjadi git submoduels, atau beberapa file biner yang sangat besar yang cocok untuk git-annex. Ini adalah repositori tunggal di mana binari adalah suite uji yang digabungkan erat dengan kode sumber utama dari revisi yang sama, sangat mirip jika mereka mengkompilasi aset waktu seperti grafik.
Saya sedang menyelidiki mengganti repositori kode svn yang berukuran sedang / besar (50 pengguna, revisi 60k, riwayat 80Gb, copy pekerjaan 2Gb). Karena jumlah pengguna telah bertambah, ada banyak churn di dalam trunk, dan fitur-fitur sering tersebar pada banyak komit yang membuat peninjauan kode sulit dilakukan. Juga tanpa bercabang tidak ada cara untuk "gerbang" kode buruk keluar, ulasan hanya dapat dilakukan setelah berkomitmen untuk trunk. Saya sedang menyelidiki alternatif. Aku berharap kita bisa pindah ke git, tapi aku punya masalah.
Masalah dengan repo saat ini sejauh git pergi adalah ukuran. Ada banyak cruft tua di sana, dan membersihkannya dengan --filter-cabang saat mengkonversi ke git dapat memotongnya dalam ukuran dengan urutan besarnya, menjadi sekitar 5-10GB. Ini masih terlalu besar. Alasan terbesar untuk ukuran repositori yang besar adalah bahwa ada banyak dokumen biner yang menjadi input untuk pengujian. File-file ini bervariasi antara .5mb dan 30mb, dan ada ratusan. Mereka juga memiliki banyak perubahan. Saya telah melihat submodules, git-annex dll, tetapi memiliki tes dalam submodule terasa salah, seperti halnya memiliki lampiran untuk banyak file yang Anda inginkan riwayat lengkap.
Jadi sifat git yang terdistribusi adalah yang menghalangi saya untuk mengadopsinya. Saya tidak begitu peduli tentang didistribusikan, saya hanya ingin fitur percabangan yang murah dan kuat. Seperti yang saya asumsikan 99,9% dari pengguna git lakukan, kita akan menggunakan repositori sentral yang diberkati dan telanjang.
Saya tidak yakin saya mengerti mengapa setiap pengguna harus memiliki riwayat lokal lengkap saat menggunakan git? Jika alur kerja tidak terdesentralisasi, apa yang dilakukan data pada disk pengguna? Saya tahu bahwa di git versi terbaru Anda dapat menggunakan klon dangkal dengan hanya riwayat terbaru. Pertanyaan saya adalah: apakah layak untuk melakukan ini sebagai mode operasi standar untuk seluruh tim? Bisakah git dikonfigurasi agar selalu dangkal sehingga Anda dapat memiliki riwayat lengkap hanya secara terpusat, tetapi pengguna secara default hanya memiliki 1000 putaran sejarah? Pilihan untuk itu tentu saja untuk hanya mengkonversi 1000 revs ke git, dan menyimpan repo svn untuk arkeologi. Namun dalam skenario itu, kami akan menghadapi masalah yang sama lagi setelah beberapa ribu revisi berikutnya ke dokumen uji.
- Apa yang baik praktek terbaik untuk menggunakan git dengan repo besar berisi banyak file biner yang Anda lakukan ingin sejarah untuk? Kebanyakan praktik terbaik dan tutorial tampaknya menghindari kasus ini. Mereka memecahkan masalah beberapa binari besar, atau mengusulkan menjatuhkan binari sepenuhnya.
- Apakah kloning yang dangkal dapat digunakan sebagai mode operasi normal atau itu "hack"?
- Bisakah submodula digunakan untuk kode di mana Anda memiliki ketergantungan yang ketat antara revisi sumber utama dan revisi submodule (seperti dalam kompilasi dependensi biner waktu, atau unit test unit)?
- Seberapa besar "terlalu besar" untuk repositori git (di tempat)? Haruskah kita menghindari beralih jika kita bisa turun ke 4GB? 2GB?