Keluaran kawalan sumber Git 2.39

Selepas dua bulan pembangunan, sistem kawalan sumber yang diedarkan Git 2.39 telah dikeluarkan. Git ialah salah satu sistem kawalan versi yang paling popular, boleh dipercayai dan berprestasi tinggi, menyediakan alat pembangunan bukan linear yang fleksibel berdasarkan percabangan dan penggabungan. Untuk memastikan integriti sejarah dan penentangan terhadap perubahan retroaktif, pencincangan tersirat bagi keseluruhan sejarah sebelumnya digunakan dalam setiap komit; ia juga mungkin untuk memperakui teg individu dan komit dengan tandatangan digital pembangun.

Berbanding dengan keluaran sebelumnya, versi baharu itu termasuk 483 perubahan, disediakan dengan penyertaan 86 pembangun, di mana 31 daripadanya mengambil bahagian dalam pembangunan buat kali pertama. Inovasi utama:

  • Perintah "git shortlog", yang direka untuk memaparkan ringkasan dengan statistik daripada sejarah perubahan, telah menambah pilihan "-kumpulan" untuk pengelompokan sewenang-wenangnya mengikut medan yang tidak terhad kepada pengarang atau komitter. Sebagai contoh, untuk memaparkan senarai pembangun dengan maklumat tentang bilangan perubahan, dengan mengambil kira pembantu yang disebut dalam medan "Dikarang bersama", anda boleh menggunakan arahan: git shortlog -ns --group=author - -kumpulan=treler:dikarang-oleh

    Output shortlog boleh diagregatkan menggunakan penentu pemformatan, dan pilihan "--kumpulan" boleh memudahkan penciptaan laporan kompleks dengan ketara dan menghapuskan keperluan untuk perintah pengisihan tambahan. Contohnya, untuk membuat laporan dengan maklumat tentang bilangan komitmen untuk keluaran tertentu yang diterima pada setiap bulan, anda boleh menentukan: git shortlog v2.38.0.. β€”date='format:%Y-%m' β€”group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Sebelum ini, untuk melakukan operasi yang serupa adalah perlu untuk menggunakan utiliti sort dan uniq: git log v2.38.0 .. β€”date='format:%Y -%m' β€”format='%cd' | menyusun | uniq -c

  • Keupayaan mekanisme "kruft pack", yang direka untuk membungkus objek yang tidak boleh dicapai yang tidak dirujuk dalam repositori (tidak dirujuk oleh cawangan atau teg), telah diperluaskan. Objek yang tidak boleh dicapai dipadamkan oleh pemungut sampah, tetapi kekal dalam repositori untuk masa tertentu sebelum dipadamkan untuk mengelakkan keadaan perlumbaan. Mekanisme "cruft pack" membolehkan anda menyimpan semua objek yang tidak boleh dicapai dalam satu fail pek, dan memaparkan data pada masa pengubahsuaian setiap objek dalam jadual berasingan, disimpan dalam fail berasingan dengan sambungan ".mtimes", supaya mereka melakukannya tidak bertindih dengan jumlah masa pengubahsuaian.

    Tempoh masa objek yang tidak boleh dicapai kekal dalam repositori sebelum ia benar-benar dipadamkan ditentukan oleh pilihan "β€”prune=" " Walau bagaimanapun, walaupun menangguhkan sebelum memadam adalah cara yang agak berkesan dan praktikal untuk mencegah rasuah repositori akibat keadaan kaum, ia tidak boleh dipercayai 100%. Untuk memudahkan memulihkan repositori yang rosak, keluaran baharu menyediakan keupayaan untuk menyimpan objek yang hilang dengan menambahkan pilihan "--expire-to" pada arahan "git repack", yang membolehkan anda menentukan fail untuk mencipta luaran salinan semua objek yang dipadam. Sebagai contoh, untuk menyimpan objek tidak boleh dicapai yang tidak berubah dalam 5 minit terakhir dalam fail backup.git, anda boleh menggunakan arahan: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Kelajuan operasi "git grep -cached" meningkat dengan ketara (sehingga 70%) apabila mencari di kawasan yang menggunakan pengklonan separa (sparse-checkout) dan yang terdapat indeks separa (indeks jarang). Sebelum ini, apabila menentukan pilihan "-cached", carian dilakukan terlebih dahulu dalam indeks biasa, dan kemudian dalam indeks separa, yang membawa kepada kelewatan yang ketara apabila mencari dalam repositori besar.
  • Pengesahan pelayan terhadap keselarasan objek baharu sebelum ia diletakkan dalam repositori semasa operasi "git push" telah dipercepatkan. Dengan beralih kepada perakaunan untuk pautan yang diisytiharkan sahaja semasa menyemak, dalam repositori ujian dengan 7 juta pautan, yang mana hanya 3% dilindungi oleh operasi tolak, pengoptimuman yang dibuat membenarkan mengurangkan masa semakan sebanyak 4.5 kali.
  • Untuk melindungi daripada kemungkinan limpahan integer dalam kod, arahan "git apply" mengehadkan saiz maksimum tampalan yang boleh diproses. Jika saiz tampalan melebihi 1 GB, ralat kini akan dipaparkan.
  • Untuk melindungi daripada kemungkinan kelemahan, perubahan telah dibuat untuk membersihkan maklumat yang tidak diperlukan daripada pengepala yang ditetapkan apabila menggunakan modul h2h3 dengan pilihan GIT_TRACE_CURL=1 atau GIT_CURL_VERBOSE=1 bersama-sama dengan HTTP/2.
  • Apabila melakukan semakan keluar pada cawangan yang merupakan pautan simbolik ke cawangan lain, arahan "git symbolic-ref HEAD" kini memaparkan nama cawangan sasaran dan bukannya nama symlink.
  • Menambahkan sokongan untuk hujah @{-1} pada pilihan β€œ--edit-description” (β€œcawangan git β€”edit-description @{-1}”) untuk mengedit perihalan cawangan sebelumnya.
  • Menambahkan arahan "git merge-tree --stdin" untuk menghantar senarai pilihan melalui input standard.
  • Pada sistem fail rangkaian, pengendali fsmonitor, yang memantau perubahan dalam sistem fail, dilumpuhkan secara lalai.

Sumber: opennet.ru

Tambah komen