Proyek kami sekitar 11GB, 10 di antaranya adalah data biner (gambar .png). Akibatnya, a git diff
atau git status
operasi memakan waktu lebih dari satu menit. Untungnya semua file data dipisahkan menjadi folder dengan nama indah data
. Tugasnya adalah "Hindari mengompresi, membedakan, dan operasi mahal lainnya pada file biner."
Itu dianggap memecah proyek menjadi dua repo. Maka
data
akan menjadi repo eksternal, yang diperiksa oleh repo kode sumber utama. Diputuskan bahwa overhead dari menjaga repo dalam sinkronisasi akan terlalu banyak, terutama untuk para seniman, yang bekerja dengan file data.Secara eksplisit mengatakan bahwa file-file itu biner , tidak termasuk file dari diff dianggap, tetapi mereka sepertinya hanya sebagian solusi untuk pertanyaan itu.
Saya merasa bahwa atribut git adalah solusinya, tetapi bagaimana caranya? Atau adakah arsitektur yang lebih baik daripada repo monolitik?
Jawaban:
Anda dapat menggunakan git-lfs atau alat serupa (git-fat, git-annex, dll.). Alat-alat itu pada dasarnya mengganti file biner dalam repo Anda dengan file teks kecil dengan hash, dan menyimpan data biner yang sebenarnya dengan cara non-git - seperti berbagi jaringan.
Membuat diffs dan semuanya superfast karena hash hanya bisa dibandingkan, dan - setidaknya untuk git-lfs - transparan untuk pengguna (setelah menginstal sekali).
Afaik git-lfs didukung oleh github, gitlab, VisualStudio, dan open source.
sumber
git-lfs
pada proyek dengan banyak gigabita aset dengan tim pengembang / artis campuran? Saya tertarik untuk mengetahui apakah orang menggunakan git-lfs untuk proyek seperti game dan animasi. Sejak itu masih terbilang baru pada saat penulisan. Dari pengalaman saya sendiri, hambatan masuk ke git untuk pengguna yang kurang teknis sudah sangat tinggi, sehingga memiliki lapisan tambahan untuk manajemen file di atasnya - mungkin sulit bagi orang untuk menggunakannya kecuali mereka sudah nyaman dengan git.Gunakan kedua repositori GIT & SVN
Jika file biner dapat dipisahkan secara logis dari sumbernya, Anda dapat mempertimbangkan menggunakan git untuk file teks, dan non DVCS seperti subversi untuk file biner.
Sebuah proyek yang saya kerjakan melakukan ini karena kami memiliki banyak GB untuk pustaka yang dikompilasi per (untuk dependensi OSX / Win32), yang kami perlukan untuk tetap versi.
Di sisi lain jika Anda memiliki pengguna non-teknis, menggunakan dua sistem kontrol versi mungkin bermasalah. Namun jika para artis tidak mengerjakan kode Anda bisa menyediakan skrip untuk melakukan pembaruan, dan mereka dapat menggunakan subversi untuk melakukan aset biner.
Gunakan SVN (dengan
git svn
)Meskipun pertukaran ini tidak selalu baik untuk pengembang yang terbiasa menggunakan git biasa, Anda bisa menggunakan SVN untuk repositori utama, dan pengembang dapat menggunakan
git svn
alat.Ini membuatnya sedikit lebih berfungsi untuk pengembang yang menggunakan git, tetapi berarti untuk semua orang yang tidak terbiasa dengan DVCS (atau VCS secara umum) - mereka dapat menggunakan model sederhana SVN tanpa harus menggunakan beberapa sistem kontrol versi yang kompleks.
git-lfs juga merupakan pilihan, tapi saya tidak menggunakannya jadi tidak bisa bicara seberapa bagus kerjanya.
sumber