Git 2.50: Peningkatan kinerja untuk repositori besar dan lainnya

git-2.50

Beberapa hari yang lalu diumumkan Rilis versi baru proyek Git 2.50, memperkenalkan lebih dari 600 perubahan didorong oleh komunitas aktif yang kali ini mencakup 98 pengembang, termasuk 35 kontributor baru.

Versi baru Git 2.50 ini disorot oleh integrasi perintah baru (git-diff-pairs), fungsi baru untuk pembersihan, pemfilteran, dan pemeliharaan, penggantian mesin penggabungan rekursif dengan ORT, serta peningkatan kinerja dan perbaikan bug.

Fitur Utama Git 2.50

Dalam versi baru Git 2.50 ini, salah satu fitur baru yang paling penting adalah optimasi dalam pengobatan yang disebut "cruft packs", Yaitu, paket objek yang tidak dapat diakses atau tidak direferensikan oleh cabang atau tag. Secara tradisional, Git menyimpan objek-objek ini dalam satu berkas paket besar, yang dapat menyebabkan masalah kinerja saat mengemas ulang repositori dengan banyak item ini.

Dengan versi baru, Git memungkinkan Anda untuk membagi paket-paket cruft ini menjadi beberapa file yang lebih kecil, yang mengurangi penggunaan disk dan meningkatkan kinerja input/output untuk operasi massal. Selain itu, sdan masukkan opsi –gabungkan-cruft-di-bawah-ukuran, yang memungkinkan menggabungkan paket kecil menjadi satu dengan lebih fleksibel daripada opsi –max-cruft-size sebelumnya, tanpa memberlakukan batasan pada ukuran file gabungan. Fitur baru ini khususnya berguna dalam proyek dengan objek yatim piatu yang tersebar di beberapa paket.

Peningkatan lain yang ditujukan pada repositori skala besar adalah dukungan eksperimental untuk pembaruan tambahan dari indeks MIDX , yang Mereka menyimpan informasi tentang objek dalam lapisan terpisah menggunakan file bitmap, yang memungkinkan pembaruan lebih cepat saat komitmen baru ditambahkan. Kemajuan ini penting untuk repositori besar yang memerlukan operasi pengindeksan cepat tanpa harus membangun ulang metadata secara menyeluruh.

Penggantian lengkap mesin penggabungan rekursif dengan ORT

Git 2.50 memperkenalkan perubahan besar dengan penghapusan permanen mesin fusi rekursif tradisional. Sebaliknya, Penggunaan ORT dikonsolidasikansebuah mesin fusi yang lebih modern, mudah dirawat, dan efisien. ORT tidak hanya menawarkan analisis konflik yang lebih tepat, tetapi juga memungkinkan Anda untuk memverifikasi apakah penggabungan dapat dilakukan tanpa membuat objek tambahan. Lebih jauh lagi, perintah merge-tree sekarang menyertakan opsi –quiet untuk digunakan sebagai pemeriksa penggabungan senyap tanpa mengubah repositori.

gitt-diff-pairs: solusi untuk masalah skalabilitas

Peninjauan kode tidak diragukan lagi merupakan salah satu pilar pengembangan kolaboratif modern, dan perbedaan atau diffs antara revisi memainkan peran penting dalam proses ini. Dengan hadirnya Git 2.50, solusi yang dirancang untuk skalabilitas telah diperkenalkan: perintah git-diff-pairs yang baru.

Secara tradisional, untuk mendapatkan perbandingan antara dua revisi, Anda menggunakan perintah seperti:

git diff HEAD~1 HEAD

Ini menghasilkan patch lengkap yang berisi semua perubahan antara revisi yang tercantum. Meskipun efektif dalam banyak kasus, ini dapat menjadi masalah kinerja saat menangani kumpulan besar file yang dimodifikasi.

Itulah sebabnya git-diff-pairs dirancang khusus untuk menerima masukan mentah langsung dari keluaran git diff-tree, dan menghasilkan patch yang sesuai secara efisien dan akurat.

Cara pakainya semudah ini:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Perintah ini mengambil pasangan blob yang disediakan dan menghasilkan keluaran diff yang tepat, mempertahankan informasi kontekstual dan memungkinkan pekerjaan dibagi menjadi beberapa kelompok yang lebih kecil. Ini membuka pintu untuk pemrosesan paralel, meningkatkan efisiensi sumber daya, dan memfasilitasi skalabilitas dalam alat berbasis diff seperti GitLab.

Fitur baru untuk pembersihan, penyaringan, dan pemeliharaan

Git 2.50 menyertakan beberapa alat tambahan yang dirancang untuk meningkatkan pemeliharaan repositori:

  • Perintah telah ditambahkan git reflog hapus, yang memungkinkan Anda menghapus reflog sepenuhnya untuk cabang tertentu, ideal untuk membersihkan riwayat pekerjaan Anda saat Anda tidak perlu lagi mempertahankan referensi sebelumnya.
  • pilihan -menyaring cat-file –batch sekarang tersedia di git, memungkinkan Anda memfilter hasil berdasarkan jenis objek.

Selain itu, beberapa optimasi internal juga disorot:

  • Peningkatan penggunaan tautan simbolik, dengan penyimpanan awalan melalui cache dan pengurangan pemeriksaan yang berlebihan.
  • Penghapusan dependensi Perl dalam dokumentasi dan skrip pengujian, menggantinya dengan fungsi shell atau implementasi C, membuatnya lebih mudah untuk dikompilasi pada sistem dengan konfigurasi minimalis.
  • Termasuk pengontrol perbedaan pengguna untuk analisis perbedaan dalam file .ini.
  • Peningkatan kompatibilitas perintah git send-email dengan server SMTP seperti Outlook.

Akhirnya, jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat berkonsultasi dengan detail di link berikut.