
Git 2.52 sekarang tersedia sebagai pembaruan stabil untuk sistem kontrol versi terdistribusi yang populer ini. Versi ini dilengkapi dengan Fitur baru, penyesuaian pemeliharaan, dan peningkatan kinerja Hasil kerja lebih dari 94 kolaborator, 33 diantaranya baru pertama kali ikut serta dalam proyek ini.
Beberapa perubahan yang paling menonjol adalah subperintah baru untuk menjelajahi repositori, alur kerja pemeliharaan yang lebih cerdas, dan kemajuan menuju transisi ke SHA-256. Semua ini disampaikan dengan pendekatan yang konsisten dan sederhana. pendekatan praktis yang mengelola repositori dengan berbagai ukuran.
Perintah git 2.52 baru untuk menjelajahi repositori
Hal baru yang paling mencolok adalah git last-modifiedDirancang untuk mendapatkan komit terbaru yang menyentuh setiap jalur secara efisien. Dalam repositori dengan banyak entri, pendekatan ini menghindari penelusuran riwayat yang berulang dan dapat beberapa kali lebih cepat daripada merantai ls-tree + logBerdasarkan pengujian internal, mengurangi waktu dari detik menjadi milidetik dalam skenario dunia nyata.
Mesin last-modified Ini dikembangkan selama bertahun-tahun di GitHub dengan nama pohon menyalahkanmemberi makan "kesalahan" tingkat pohon mereka sejak tahun 2012. Selanjutnya, Insinyur GitLab Mereka menyempurnakan set patch untuk mengintegrasikannya ke dalam Git 2.52, meskipun masih ada fitur yang perlu ditambahkan, seperti format disk untuk menyimpan hasil cache dari eksekusi sebelumnya.
Yang eksperimental juga tiba git repoPayung untuk berkonsultasi fitur repositori. Dengan git repo info bisakah kamu memberi tahu apakah itu telanjang o dangkal, format objek dan referensi, dan dengan git repo structure dicetak statistik struktural (jumlah komit, pohon, blob, cabang, tag, dll.). Selain itu, info menggabungkan opsi yang disingkat -z dan mampu laporkan format objek bekas.
Bagi mereka yang bekerja pada level rendah dengan referensi, git refs Suma git refs list (alias dari git for-each-ref) Dan git refs exists (mirip dengan git show-ref --existsMereka tidak menawarkan kemampuan yang belum pernah ada sebelumnya, tetapi mereka memusatkan operasi yang sering referensi di bawah satu perintah.
Kecil tapi berguna: sekarang git cmd --help-all Itu juga berhasil di luar repositoriIni memudahkan untuk mengakses bantuan global tanpa perlu menginisialisasi apa pun.
Pemeliharaan dan kinerja
Git 2.52 memperkenalkan tugas geometric dalam git maintenance Ini menghindari pengemasan ulang semua-dalam-satu jika memungkinkan dan memangkas objek yang tidak dapat dijangkau lebih jarang. Tugas ini memeriksa paket-paket untuk membentuk deret geometri berdasarkan jumlah objek dan padat tanpa pemangkasan bila diperlukan; jika operasi akan berakhir dalam satu paket, lakukan git gc lengkap untuk konsolidasi dan pemangkasan.
Dalam hal kecepatan, ada kemajuan yang terukur: git describe Sekarang menggunakan antrian prioritas dan memperoleh sekitar kinerja 30%.; git remote rename mengoptimalkan penggantian nama referensi; git ls-files Ini menjaga indeks tersebar dalam lebih banyak kasus; git log -L Ini menghindari perbedaan tingkat pohon tertentu dalam penggabungan, mempercepat analisis; dan perpustakaan xdiff Ini menggabungkan beberapa optimasi yang Diff dan merge ditingkatkan di tingkat berkas.
Keamanan dan peta jalan menuju Git 3.0
Transisi dari SHA-1 ke SHA-256 terus berlanjut. Elemen pertama SHA-256 muncul di versi 2.52. interoperabilitas antar algoritmaTujuannya adalah agar repositori dengan hash yang berbeda dapat bertukar perubahan dengan lancar. Ini masih tahap awal, tetapi akan membuka jalan bagi rilis utama berikutnya.
Perubahan lain yang direncanakan untuk Git 3.0 adalah cabang default akan disebut "utama". Hal ini telah disertakan sejak versi 2.52. petunjuk dan pesan bantuan Untuk memfasilitasi perubahan tersebut, dan siapa pun yang ingin maju dapat mengkompilasi dengan bendera WITH_BREAKING_CHANGES untuk menguji perilaku yang direncanakan.
Ini juga mencakup, secara opsional, kode Rust yang dilindungi oleh WITH_RUSTyang mengimplementasikan pengkodean/dekode bilangan bulat dengan lebar variabel. Dalam versi ini, hal ini tidak wajib dan Git 2.52 berfungsi tanpa kompiler Rust, tetapi Git 3.0 diperkirakan memerlukannya dan mengembangkan bagian yang ditulis ulang.
Peningkatan dalam alur kerja dan kegunaan
Penggunaan filter Bloom jalur berubahFilter probabilistik yang mempercepat perjalanan ketika dipersempit oleh rute. Sekarang filter ini digunakan bahkan ketika spesifikasi jalur berisi wildcard parsial (misalnya, foo/bar/*/baz) dan dalam skenario dengan beberapa rute yang menarik, menguntungkan kueri seperti last-modified dan beberapa perintah sejarah.
git sparse-checkout tambahkan tindakan clean Untuk mengatasi kasus di mana, ketika definisi area yang diminati diubah, berkas tidak terpilih. Dengan satu langkah, Anda dapat bersihkan pohon kerja dari elemen yang tidak diinginkan.
Penambahan bermanfaat lainnya: variabel baru commitGraph.changedPaths untuk mengaktifkan secara default --changed-paths en git commit-graph; pilihan stash.index untuk git stash pop/apply berperilaku seolah-olah dipanggil dengan --index; git diff-tree recibe --max-depth; git fast-import ahora mengelola label yang ditandatangani; dan git repo info Pelajari cara melaporkan format objek selain dukungan untuk -z.
Ketersediaan Git 2.52
Kode sumber untuk Git 2.52 dapat diunduh dari situs resmi untuk mengompilasinya secara lokal. Ini akan tiba dalam beberapa hari dan minggu mendatang. repositori distribusi utama GNU/Linux di Eropa (Debian, Ubuntu, Fedora, openSUSE, Arch, dll.) sudah memiliki manajer seperti Homebrew, MacPorts atau Chocolatey, dengan waktu pengemasan yang biasa.
Dengan rilis ini, Git memperkuat operasi hariannya dengan perintah yang lebih cepat dan lebih bergunaRutinitas pemeliharaan yang lebih efisien dan fondasi awal transisi ke SHA-256 kini tersedia di "utama" sebagai cabang default. Pengguna yang melakukan peningkatan kini dapat mengujinya. git last-modifiedBaru git repotugas geometri git maintenance dan penyesuaian lainnya yang, tanpa menimbulkan suara, memperlancar pengalaman dalam repositori kecil maupun besar.