Git 2.50: Peningkatan prestasi untuk repositori besar dan banyak lagi

git-2.50

Beberapa hari lalu ia diumumkan Keluaran versi baharu projek Git 2.50, memperkenalkan lebih daripada 600 perubahan didorong oleh komuniti aktif yang kali ini merangkumi 98 pembangun, termasuk 35 penyumbang baharu.

Versi baharu Git 2.50 ini diserlahkan oleh penyepaduan arahan baharu (git-diff-pair), fungsi baharu untuk pembersihan, penapisan dan penyelenggaraan, penggantian enjin gabungan rekursif dengan ORT, serta peningkatan prestasi dan pembetulan pepijat.

Ciri-ciri Baru Git 2.50

Dalam versi baharu Git 2.50 ini, salah satu ciri baharu yang paling penting ialah pengoptimuman dalam rawatan apa yang dipanggil "kruft pack", Iaitu, pakej objek yang tidak boleh diakses atau tidak dirujuk oleh cawangan atau tag. Secara tradisinya, Git menyimpan objek ini dalam satu fail pakej yang besar, yang boleh menyebabkan masalah prestasi apabila membungkus semula repositori dengan banyak item ini.

Dengan versi baharu, Git membolehkan anda membahagikan pek cruft ini kepada beberapa fail yang lebih kecil, yang mengurangkan penggunaan cakera dan meningkatkan prestasi input/output untuk operasi pukal. Selain itu, sdan masukkan pilihan –combine-cruft-below-sizeYang membolehkan menggabungkan pakej kecil menjadi satu dengan lebih fleksibel daripada pilihan –max-cruft-size sebelumnya, tanpa mengenakan had pada saiz fail gabungan. Ciri baharu ini amat berguna dalam projek dengan objek yatim yang tersebar di pelbagai pakej.

Satu lagi peningkatan yang bertujuan untuk repositori berskala besar ialah sokongan eksperimen untuk kemas kini tambahan bagi Indeks MIDX , yang Mereka menyimpan maklumat tentang objek dalam lapisan yang berasingan menggunakan fail bitmap, yang membolehkan kemas kini lebih pantas apabila komitmen baharu ditambahkan. Kemajuan ini penting untuk repositori besar yang memerlukan operasi pengindeksan pantas tanpa perlu membina semula metadata sepenuhnya.

Penggantian lengkap enjin gabungan rekursif dengan ORT

Git 2.50 memperkenalkan perubahan besar dengan penyingkiran kekal enjin gabungan rekursif tradisional. Sebaliknya, penggunaan ORT disatukan, yang enjin gabungan yang lebih moden, boleh diselenggara dan cekap. ORT bukan sahaja menawarkan analisis konflik yang lebih tepat, tetapi juga membolehkan anda mengesahkan sama ada gabungan boleh dilakukan tanpa menghasilkan objek tambahan. Tambahan pula, perintah merge-tree kini termasuk pilihan –quiet untuk digunakan sebagai penyemak gabungan senyap tanpa mengubah suai repositori.

gitt-diff-pairs: penyelesaian kepada masalah kebolehskalaan

Semakan kod sudah pasti merupakan salah satu tonggak pembangunan kolaboratif moden, dan perbezaan atau perbezaan antara semakan memainkan peranan penting dalam proses ini. Dengan ketibaan Git 2.50, penyelesaian yang direka untuk kebolehskalaan telah diperkenalkan: arahan git-diff-pairs baharu.

Secara tradisinya, untuk mendapatkan perbandingan antara dua semakan anda menggunakan arahan seperti:

git diff HEAD~1 HEAD

Ini menjana tampalan lengkap yang mengandungi semua perubahan antara semakan yang disenaraikan. Walaupun berkesan dalam banyak kes, ia boleh menjadi isu prestasi apabila berurusan dengan set besar fail yang diubah suai.

Itulah sebabnya git-diff-pair direka khusus untuk menerima input mentah terus daripada keluaran git diff-tree, dan menjana patch yang sepadan dengan cekap dan tepat.

Penggunaannya semudah:

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

Perintah ini mengambil pasangan gumpalan yang disediakan dan menjana output perbezaan yang tepat, mengekalkan maklumat kontekstual dan membenarkan kerja dibahagikan kepada kelompok yang lebih kecil. Ini membuka pintu kepada pemprosesan selari, meningkatkan kecekapan sumber dan memudahkan skalabiliti dalam alatan berasaskan berbeza seperti GitLab.

Ciri baharu untuk pembersihan, penapisan dan penyelenggaraan

Git 2.50 termasuk beberapa alat tambahan yang direka untuk meningkatkan penyelenggaraan repositori:

  • Perintah telah ditambah git reflog drop, yang membolehkan anda memadamkan reflog sepenuhnya untuk cawangan tertentu, sesuai untuk membersihkan sejarah kerja anda apabila anda tidak lagi perlu mengekalkan rujukan sebelumnya.
  • Pilihan –penapis cat-file –batch kini tersedia dalam git, membolehkan anda menapis hasil mengikut jenis objek.

Di samping itu, beberapa pengoptimuman dalaman turut diserlahkan:

  • Penggunaan pautan simbolik yang dipertingkat, dengan caching awalan dan pengurangan semakan berlebihan.
  • Mengalih keluar kebergantungan Perl dalam dokumentasi dan skrip ujian, menggantikannya dengan fungsi shell atau pelaksanaan C, menjadikannya lebih mudah untuk disusun pada sistem dengan konfigurasi minimalis.
  • Termasuk pengawal userdiff untuk analisis perbezaan dalam fail .ini.
  • Keserasian yang dipertingkatkan bagi arahan git send-emel dengan pelayan SMTP seperti Outlook.

Akhir sekali, jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh merujuk butiran di dalam pautan berikut.