Rilis kontrol sumber Git 2.35

Setelah dua bulan pengembangan, sistem kontrol sumber terdistribusi Git 2.35 telah dirilis. Git adalah salah satu sistem kontrol versi yang paling populer, andal, dan berkinerja tinggi, menyediakan alat pengembangan non-linier yang fleksibel berdasarkan percabangan dan penggabungan. Untuk memastikan integritas riwayat dan ketahanan terhadap perubahan retroaktif, hashing implisit dari seluruh riwayat sebelumnya digunakan di setiap penerapan; dimungkinkan juga untuk mengesahkan masing-masing tag dan penerapan dengan tanda tangan digital pengembang.

Dibandingkan dengan rilis sebelumnya, versi baru menyertakan 494 perubahan, disiapkan dengan partisipasi 93 pengembang, 35 di antaranya mengambil bagian dalam pengembangan untuk pertama kalinya. Inovasi utama:

  • Kemungkinan penggunaan kunci SSH untuk menandatangani objek Git secara digital telah diperluas. Untuk membatasi masa berlaku beberapa kunci, dukungan untuk arahan OpenSSH "valid-before" dan "valid-after" telah ditambahkan, yang dengannya Anda dapat memastikan pekerjaan yang benar dengan tanda tangan setelah kunci diputar oleh salah satu pengembang. Sebelumnya, ada masalah dengan pemisahan tanda tangan berdasarkan kunci lama dan baru - jika Anda menghapus kunci lama, tidak mungkin untuk memverifikasi tanda tangan yang dibuat dengannya, dan jika Anda membiarkannya, maka masih mungkin untuk melakukannya. buat tanda tangan baru dengan kunci lama yang sudah diganti dengan kunci lain. Menggunakan valid-before dan valid-after Anda dapat memisahkan cakupan kunci berdasarkan waktu pembuatan tanda tangan.
  • Dalam pengaturan merge.conflictStyle, yang memungkinkan Anda memilih mode untuk menampilkan informasi tentang konflik selama penggabungan, dukungan untuk mode "zdiff3" telah muncul, yang memindahkan semua baris standar yang ditentukan pada awal atau akhir konflik di luar konflik area, yang memungkinkan penyajian informasi lebih kompak.
  • Mode “--staged” telah ditambahkan ke perintah “git stash”, yang memungkinkan Anda menyembunyikan hanya perubahan yang ditambahkan ke indeks, misalnya dalam situasi ketika Anda perlu menunda sementara beberapa perubahan kompleks untuk terlebih dahulu tambahkan apa yang sudah siap dan urus sisanya setelah beberapa saat. Mode ini mirip dengan perintah “git commit”, hanya menulis perubahan yang ditempatkan di indeks, tetapi alih-alih membuat komit baru di “git stash —staged”, hasilnya disimpan di area simpanan sementara. Setelah perubahan diperlukan, perubahan tersebut dapat dikembalikan dengan perintah “git stash pop”.
  • Penentu format baru telah ditambahkan ke perintah "git log", "-format=%(deskripsikan)", yang memungkinkan Anda menggabungkan keluaran "git log" dengan keluaran perintah "git deskripsikan". Parameter untuk "git deskripsikan" ditentukan langsung di dalam penentu ("-format=%(describe:match= ,kecualikan= )"), di mana Anda juga dapat menyertakan tag yang dipersingkat ("—format=%(describe:tags= )") dan konfigurasikan jumlah karakter heksadesimal untuk mengidentifikasi objek (“--format=%(describe:abbrev= )). Misalnya, untuk membuat daftar 8 komit terakhir yang tagnya tidak memiliki tag kandidat rilis, dan menentukan pengenal 8 karakter, Anda dapat menggunakan perintah: $ git log -8 —format='%(describe:exclude=*-rc *,singkatan=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642 -gb56bd 95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640- gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • Pengaturan user.signingKey sekarang mendukung tipe kunci baru yang tidak terbatas pada tipe “ssh-” dan menentukan jalur file lengkap ke kunci tersebut. Tipe alternatif ditentukan menggunakan awalan "key::", misalnya "key::ecdsa-sha2-nistp256" untuk kunci ECDSA.
  • Kecepatan menghasilkan daftar perubahan dalam mode “—histogram”, serta saat menggunakan opsi “—color-moved-ws”, yang mengontrol penyorotan spasi dalam perbedaan warna, telah meningkat secara nyata.
  • Perintah "git jump", digunakan untuk memberi Vim informasi tentang lompatan yang tepat ke posisi yang diinginkan dalam file saat menguraikan konflik penggabungan, melihat perbedaan, atau melakukan operasi pencarian, memberikan kemampuan untuk mempersempit konflik penggabungan yang tercakup. Misalnya, untuk membatasi operasi pada direktori "foo" saja, Anda dapat menentukan "git jump merge - foo", dan untuk mengecualikan direktori "Documentation" dari pemrosesan - "git jump merge - ':^Documentation'"
  • Pekerjaan telah dilakukan untuk menstandardisasi penggunaan tipe "size_t" alih-alih "unsigned long" untuk nilai yang mewakili ukuran objek, yang memungkinkan penggunaan filter "clean" dan "smudge" dengan file yang lebih besar dari 4 GB pada semua platform, termasuk platform dengan model data LLP64, tipe “unsigned long” yang dibatasi hingga 4 byte.
  • Opsi “-empty=(stop|drop|keep)” telah ditambahkan ke perintah “git am”, yang memungkinkan Anda memilih perilaku untuk pesan kosong yang tidak berisi patch saat mengurai patch dari kotak surat. Nilai “stop” akan mengakhiri seluruh operasi patching, “drop” akan melewatkan patch kosong, dan “keep” akan membuat commit kosong.
  • Menambahkan dukungan untuk indeks parsial (indeks renggang) ke perintah "git reset", "git diff", "git menyalahkan", "git mengambil", "git pull" dan "git ls-files" untuk meningkatkan kinerja dan menghemat ruang di repositories , di mana operasi kloning parsial (pembayaran jarang) dilakukan.
  • Perintah "git sparse-checkout init" sudah tidak digunakan lagi dan harus diganti dengan "git sparse-checkout set".
  • Menambahkan implementasi awal dari backend "reftable" baru untuk menyimpan referensi seperti cabang dan tag di repositori. Backend baru menggunakan penyimpanan blok yang digunakan oleh proyek JGit dan dioptimalkan untuk menyimpan referensi dalam jumlah yang sangat besar. Backend belum terintegrasi dengan sistem referensi dan belum siap untuk penggunaan praktis.
  • Palet warna dari perintah "git grep" telah disesuaikan agar sesuai dengan utilitas GNU grep.

Sumber: opennet.ru

Tambah komentar