bundle-uri adalah fitur baru Git yang mengunduh file cache untuk mengisi lebih dulu data proyek, lalu mengurangi proses fetch yang rumit dengan server
- Biasanya, perintah
git clone bernegosiasi dengan server untuk mengunduh data yang dibutuhkan → ini bisa tidak efisien
bundle-uri mengambil data awal yang di-cache dari CDN, lalu setelah itu hanya memperbarui status terbaru dari server → berpotensi menghemat waktu
Apakah kecepatan clone menjadi lebih cepat?
Ya? - Bisa lebih cepat
- Jika menggunakan opsi file lokal, kecepatan clone menjadi sangat cepat
- Jika memakai file bundle dari file system yang di-mount di VM atau cache cloud, sinkronisasi bisa berlangsung lebih cepat
Tidak? - Bisa lebih lambat
- Menerima data yang sama dari CDN terlihat seperti seharusnya lebih cepat, tetapi justru lebih lambat
- Hasil eksperimen: clone yang memakai bundle lebih lambat daripada clone biasa
- Clone biasa: 2 menit 36 detik
- Clone dengan bundle: 3 menit 20 detik
- Terjadi masalah objek yang sudah diterima dari bundle diunduh lagi
Mungkin? - Bisa juga begitu
- Masalah terjadi karena Git hanya membaca
refs/heads (referensi branch) dari file bundle
- Referensi lainnya diabaikan sehingga data tambahan harus diunduh lagi dari server
- Jika kode Git diubah agar menyalin semua referensi, kecepatan clone membaik
- Waktu clone setelah perbaikan: 2 menit 19 detik (lebih cepat dari 2 menit 36 detik sebelumnya)
- Jumlah objek yang diunduh tambahan: 43.877 (sekitar 1% dari total)
Cara memperbaiki dan menerapkan patch
- Memperbaiki bagian di kode
bundle-uri.c Git yang mengabaikan referensi selain refs/heads
- Setelah diubah agar semua referensi disalin → kecepatan clone meningkat
- Perbaikan ini adalah patch minimal yang hanya terdiri dari perubahan 6 karakter
Apakah fitur ini layak digunakan?
possibly - Mungkin membantu
- Di platform seperti GitHub dan GitLab, ada keuntungan besar karena bisa mengurangi beban CPU server
- Server tidak perlu menghitung packfile secara langsung dan bisa menyerahkannya ke CDN → menghemat sumber daya server
- Ada juga kasus yang bisa berguna bagi pengguna individu:
- Saat perlu berulang kali melakukan clone skala besar dari server Git internal
- Saat sistem CI/CD memerlukan pekerjaan full clone berulang
Secara realistis kemungkinan akan dipaksakan
- Dalam protokol Git terbaru, server dapat memberikan URL bundle kepada klien
- Jika server memberikan URL file bundle, klien akan otomatis mengunduhnya lalu melanjutkan sinkronisasi
- Jika fitur ini diaktifkan di GitHub dan layanan serupa, pengguna tidak akan punya banyak pilihan
Kesimpulan
- Menggunakan file bundle bisa membuat clone lebih cepat, tetapi pada awalnya justru bisa lebih lambat karena cara Git memprosesnya
- Jika kode Git diubah untuk memperbaiki cara penanganan referensi, kecepatan clone meningkat
- Jika ke depannya GitHub, GitLab, dan layanan lain mengadopsi fitur ini, kemungkinan besar klien akan memakainya secara otomatis
Belum ada komentar.