Dari pengalaman saya sendiri, semua pernyataan berikut ini benar:
- Git sangat efisien dalam menyimpan file teks, dan hanya menyimpan file-file ini yang diubah. jadi ketika melakukan perbandingan SVN dan Git untuk membandingkan ukuran repositori, mereka mungkin serupa, atau bahkan mungkin ada keuntungan kecil untuk Git.
- Ini sepenuhnya salah jika Anda membandingkan ukuran repositori di mana sejumlah besar file adalah file kantor (seperti kata MS, excel, powerpoint, ...). Di sini Git juga menyimpan salinan lengkap, yang berarti bahwa 10 perubahan kecil pada slide powerpoint menghasilkan 10 salinan lengkap, di mana Subversion hanya menyimpan diff biner, yang mungkin merupakan faktor 100 lebih kecil.
Jika Anda membandingkan lokasi checkout (yang merupakan repositori dengan Git), ceritanya sangat berbeda:
- Subversion menyimpan setiap file salinan lengkap, sehingga ukuran lokasi checkout Anda biasanya 2 kali ukuran file itu sendiri.
- Git menyimpan histori lengkap repositori secara lokal, jadi tergantung pada ukuran histori, ini mungkin lebih kecil atau lebih besar dari pada salinan checkout Subversion.
Jika Anda membandingkan jumlah byte yang harus Anda unduh atau unggah, itu berbeda lagi.
- Subversi biasanya mengirim atau menerima lebih sedikit byte, karena hanya mengirim perbedaan. Itu harus dilakukan pada setiap komit dan pembaruan.
- Git harus mendapatkan seluruh repositori (awalnya), dan kemudian mengirimkan file lengkap (terkompresi?) Yang tidak berbeda untuk file teks, tetapi mungkin berbeda untuk file biner. Dan ya, Git hanya melakukan itu ketika Anda mendorong atau menarik sesuatu ke repositori jarak jauh.
Jadi pada akhirnya, Anda membandingkan apel dengan jeruk, dan tergantung pada apa yang ingin Anda lakukan dengan Subversion atau Git, hasilnya mungkin berbeda.
@ jk bertanya tentang salinan lengkap atau perbedaan biner, dan saya tidak bisa menjawab pertanyaan itu. Saya bertanya kepada Matthew McCullough yang memberikan lokakarya Git akhir-akhir ini di Jax 2012 (yang saya kunjungi). Dia telah meluangkan waktu (terima kasih banyak untuknya) untuk menjelaskan dengan intis rinci pekerjaan batin Git. Jadi ya, ada kompresi yang bekerja di sana (dan saya akan melakukan percobaan dengan file microsoft office juga dan akan membandingkannya dengan intinya), tetapi tidak, kompresi dilakukan pada seluruh file. Mengutip dari intinya:
Objek yang longgar ditulis dalam format terkompresi, tetapi non-delta pada saat setiap komit.