Setelah dua bulan kerja keras, komunitas pengembangan Git memperkenalkan Git versi 2.51, pembaruan yang Ini menyatukan 506 perubahan, di mana 91 pengembang berpartisipasi, yang mana 21 orang berkontribusi untuk pertama kalinya.
Rilis ini memperkenalkan penyempurnaan yang dirancang untuk meningkatkan kinerja dan menyederhanakan manajemen repositori, termasuk pengoptimalan kinerja untuk git-push dan git-fetch, serta beberapa perubahan yang bergerak menuju cabang 3.x yang baru.
Fitur Utama Git 2.51
Salah satu hal yang menarik dari Git 2.51 adalah Mengoptimalkan perintah git push dan git fetch dalam repositori dengan sejumlah besar referensi. Kunci dari peningkatan ini ada pada pembaruan batch, yang memproses beberapa tautan dalam satu transaksi, bukan secara individual.
Berkat optimasi ini, Backend yang dapat direftable sekarang mengungguli backend file tradisional.Dalam pengujian dengan repositori yang berisi hingga 10 referensi, kinerja git fetch meningkat sebesar 000x untuk reftable dan 22x untuk file, sementara git push meningkat masing-masing sebesar 1.25x dan 18x.
Inovasi penting lainnya adalah iPengenalan paket cruft, dirancang untuk menyimpan objek yang tidak dapat diakses yang tidak terhubung ke cabang atau tag. Objek-objek ini, yang sebelumnya tersebar, sekarang dapat dikelola dalam kemasan terpisahs, yang membuatnya lebih mudah dikontrol dan mengurangi ukuran indeks multi-paket (MIDX).
Dengan pengaturan repack.MIDXMustContainCruft baru, Git menghindari penyertaan objek-objek ini dalam indeks utamaDalam pengujian di GitHub, konfigurasi ini mengurangi ukuran indeks hingga 38%, mempercepat penulisan hingga 35%, dan meningkatkan pembacaan hingga 5%.
Pendekatan baru untuk pengemasan objek
El perintah git pack-objects menggabungkan opsi –path-walk, yang memperkenalkan metode inovatif untuk mengatur ulang berkas pengemasan. Alih-alih memproses objek berdasarkan hash-nya, Git kini dapat melakukan iterasi berdasarkan jalur berkasnya, mengemas objek-objek yang berada di lokasi yang sama. Pendekatan ini menghilangkan kebutuhan untuk mengurutkan objek terlebih dahulu dan menghasilkan berkas pengemasan yang lebih kecil dan lebih efisien.
Dengan versi ini juga Format baru untuk pertukaran status pohon kerja dan indeks yang dibuat dengan Git Stash telah distandarisasi.Kini Anda dapat mengekspor dan mengimpor stash seperti halnya cabang atau tag, sehingga memudahkan pemindahan status dari satu sistem ke sistem lainnya.
Sebagai contoh:
git stash ekspor --ke-ref ref/stashes/mi-stash git dorong asal ref/stashes/mi-stash git ambil asal '+ref/stashes/*:ref/stashes/*' git stash impor ref/stashes/mi-stash
Peningkatan pada perintah klasik
beberapa Perintah Git telah menerima pembaruan yang relevan:
- git cat-file sekarang melaporkan objek dan submodul yang hilang, menampilkan pengenal alih-alih hanya menandai “hilang”.
- git log mendapat manfaat dari pengoptimalan filter Bloom, mempercepat penelusuran dengan beberapa jalur file.
- Perintah git switch dan git restore, yang dianggap eksperimental sejak 2019, akhirnya distabilkan sebagai alternatif modern untuk git checkout.
- Perintah git whatchanged, setara dengan git log –raw, sudah tidak digunakan lagi dan akan dihapus di Git 3.0.
- git for-each-ref menerima opsi –start-after, yang bersama dengan –count memungkinkan paginasi output.
- git merge dan git pull sekarang menyertakan opsi –compact-summary, yang menyediakan format ringkasan yang lebih ringkas.
Dukungan C99 dan aturan kontribusi baru
Git terus menyesuaikan kodenya dengan karakteristik standar C99. Meskipun kompiler yang kompatibel diperlukan sejak tahun 2021, pengembang bergerak hati-hati untuk menjaga kompatibilitas dengan kompiler yang hanya mengimplementasikannya sebagian.
Selain itu, perubahan signifikan telah diperkenalkan dalam kebijakan kontribusi: Patch sekarang dapat dikirimkan dengan nama samaran, keputusan yang selaras dengan aturan kernel Linux dan dirancang untuk menawarkan fleksibilitas yang lebih besar kepada kontributor.
Melihat ke depan ke Git 3.0
El Tim pengembangan juga telah memperbarui peta jalan ke Git 3.0., dengan dua perubahan utama yang menonjol: penggunaan SHA-256 sebagai pengenal objek secara default dan adopsi format reftable untuk menyimpan referensi cabang dan tag. Peningkatan ini bertujuan untuk meningkatkan keamanan dan efisiensi dalam repositori yang semakin besar dan kompleks.
sumber: https://lore.kernel.org