Keluaran sistem kawalan sumber teragih Git 2.31

Sistem kawalan sumber teragih Git 2.31 kini tersedia. 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 679 perubahan, disediakan dengan penyertaan 85 pembangun, di mana 23 daripadanya mengambil bahagian dalam pembangunan buat kali pertama. Inovasi utama:

  • Menambah arahan "penyelenggaraan git", yang membolehkan anda melakukan kerja berkala pada sistem yang tidak menyokong cron. Contohnya, menggunakan arahan baharu, anda boleh mengatur proses pembungkusan repositori berjalan secara berkala, supaya anda tidak perlu menunggu sehingga repositori dikunci apabila pembungkusan dilakukan secara automatik semasa menjalankan pelbagai arahan. Perintah "penyelenggaraan git" membolehkan anda melakukan pengoptimuman dan operasi untuk mengekalkan struktur optimum repositori di latar belakang, tanpa menyekat sesi interaktif - sekali sejam, kerja dilakukan untuk memuat turun objek segar secara proaktif dari repositori jauh dan mengemas kini fail dengan graf komit, dan proses pembungkusan repositori bermula setiap malam .
  • Menambah sokongan untuk mengekalkan indeks terbalik (revindex) pada cakera untuk fail pek. Ingat bahawa Git menyimpan semua data dalam bentuk objek, yang terletak dalam fail berasingan. Untuk meningkatkan kecekapan bekerja dengan repositori, objek juga diletakkan dalam fail pek, di mana maklumat dibentangkan dalam bentuk aliran objek yang mengikuti satu sama lain (format yang sama digunakan apabila memindahkan objek dengan git fetch dan git push perintah). Untuk setiap fail pek, fail indeks (.idx) dicipta, yang membolehkan anda menentukan dengan cepat offset dalam fail pek di mana objek yang diberikan disimpan menggunakan pengecam objek. Diperkenalkan dalam Git 2.31, indeks terbalik (.rev) bertujuan untuk mengoptimumkan proses menentukan pengecam objek daripada maklumat tentang penempatan objek dalam fail pek.

    Sebelum ini, penukaran sedemikian dilakukan dengan cepat semasa menghuraikan fail pek dan disimpan hanya dalam ingatan, yang tidak membenarkan indeks serupa digunakan semula dan memaksa indeks dijana setiap kali. Operasi membina indeks adalah untuk membina susunan pasangan kedudukan objek dan menyusunnya mengikut kedudukan, yang boleh mengambil masa yang lama untuk fail pek besar.

    Contohnya, operasi untuk memaparkan kandungan objek, yang menggunakan indeks langsung, adalah 62 kali lebih pantas daripada operasi untuk memaparkan saiz objek, yang mana data kedudukan ke objek tidak diindeks. Selepas menggunakan indeks terbalik, operasi ini mula mengambil masa yang lebih kurang sama. Indeks terbalik juga membolehkan anda mempercepatkan operasi penghantaran objek apabila melaksanakan arahan ambil dan tolak dengan memindahkan terus data sedia dari cakera. Secara lalai, indeks terbalik tidak dibuat; untuk menjananya, anda perlu mendayakan tetapan "git config pack.writeReverseIndex true" dan kemudian bungkus repositori dengan arahan "git repack -Ad".

  • Menambahkan pengoptimuman prestasi berdasarkan penampilan dalam format fail graf komit, digunakan untuk mengoptimumkan akses kepada maklumat tentang komit, data baharu tentang nombor penjanaan komit, yang boleh digunakan untuk mempercepatkan operasi tambahan dengan komit.
  • Pilihan tambahan untuk mentakrifkan semula nama cawangan utama yang digunakan secara lalai dalam repositori baharu (tetapan init.defaultBranch). Apabila mengakses repositori luaran, git cuba menyemak cawangan yang ditunjuk oleh HEAD, i.e. jika pelayan luaran menggunakan cawangan "utama" secara lalai, maka operasi "klon git" akan cuba menyemak "utama" secara tempatan. Git 2.31 kini menyokong jenis pembayaran ini untuk repositori kosong. Contohnya, apabila mengklon repositori baharu secara setempat sebelum menambah tampalan pertama padanya, salinan tempatan kini akan mengandungi nama huluan lalai yang ditetapkan pada pelayan luaran.
  • Menambahkan pilihan --disk-usage pada arahan "git rev-list" untuk memberikan ringkasan saiz objek.
  • Untuk menjangkakan perubahan akan datang pada bahagian belakang gabungan, pengesanan nama semula telah dioptimumkan dengan ketara.
  • Sokongan untuk perpustakaan ungkapan biasa PCRE1 warisan telah dihentikan.
  • Adalah mungkin untuk melarang secara paksa penggunaan pautan yang dipendekkan, tanpa mengira algoritma pencincangan. Larangan didayakan dengan memberikan nilai "tidak" kepada parameter core.abbrev.
  • Menambahkan pilihan "--path-format=(absolute|relative)" pada perintah "git rev-parse" untuk menentukan secara eksplisit sama ada laluan relatif atau mutlak harus dikeluarkan.
  • Skrip penyiapan Bash memudahkan anda menambah peraturan penyiapan untuk subperintah "git" anda sendiri.
  • Menambahkan pilihan --stdin pada arahan "git bundle" untuk membaca rujukan daripada aliran input standard.
  • Pilihan baharu telah ditambahkan pada arahan "git log": "--diff-merges=" "
  • Menambahkan pilihan "--deduplicatecan" pada arahan "git ls-files" untuk menghapuskan output pendua.
  • Menambah topeng baharu untuk mengecualikan pelbagai komitmen - " ^!” Dan " ^- "
  • Menambahkan pilihan "--left-only" dan "--right-only" pada perintah "git range-diff" untuk menunjukkan hanya satu sisi julat yang dibandingkan.
  • Menambahkan --skip-to= pilihan pada arahan "git diff" dan "git log". " dan "β€”putar-ke= Β» untuk melangkau atau bergerak ke penghujung laluan permulaan.
  • Menambahkan pilihan "--skip-to=" kepada arahan "git difftool". Β» untuk menyambung semula sesi yang terganggu dari laluan rawak.
  • Tatakelakuan, yang mentakrifkan prinsip asas untuk menyelesaikan situasi konflik antara pembangun, telah dikemas kini kepada versi 2.0 (sebelum ini versi 1.4 telah digunakan).

    Sumber: opennet.ru

Tambah komen