Keluaran sistem kawalan sumber teragih Git 2.26

Ada pelepasan sistem kawalan sumber teragih Git 2.26.0. 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 terdahulu 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 504 perubahan, disediakan dengan penyertaan 64 pembangun, di mana 12 daripadanya mengambil bahagian dalam pembangunan buat kali pertama. Utama inovasi:

  • Lalai telah ditukar kepada versi kedua Protokol komunikasi Git, yang digunakan apabila pelanggan menyambung dari jauh ke pelayan Git. Versi kedua protokol terkenal kerana menyediakan keupayaan untuk menapis cawangan dan teg pada bahagian pelayan, mengembalikan senarai pautan yang dipendekkan kepada klien. Sebelum ini, sebarang arahan tarik akan sentiasa menghantar senarai penuh rujukan kepada pelanggan dalam keseluruhan repositori, walaupun ketika pelanggan hanya mengemas kini satu cawangan atau menyemak sama ada salinan repositori mereka dikemas kini. Satu lagi inovasi yang ketara ialah keupayaan untuk menambah keupayaan baharu pada protokol apabila fungsi baharu tersedia dalam kit alat. Kod pelanggan kekal serasi dengan protokol lama dan boleh terus berfungsi dengan kedua-dua pelayan baharu dan lama, secara automatik kembali ke versi pertama jika pelayan tidak menyokong yang kedua.
  • Pilihan "-show-scope" telah ditambahkan pada arahan "git config", menjadikannya lebih mudah untuk mengenal pasti tempat di mana tetapan tertentu ditentukan. Git membolehkan anda mentakrifkan tetapan di tempat yang berbeza: dalam repositori (.git/info/config), dalam direktori pengguna (~/.gitconfig), dalam fail konfigurasi seluruh sistem (/etc/gitconfig), dan melalui arahan pilihan baris dan pembolehubah persekitaran. Apabila melaksanakan "git config" agak sukar untuk memahami di mana betul-betul tetapan yang dikehendaki ditakrifkan. Untuk menyelesaikan masalah ini, pilihan "--tunjuk-asal" tersedia, tetapi ia hanya menunjukkan laluan ke fail yang tetapan ditakrifkan, yang berguna jika anda berhasrat untuk mengedit fail, tetapi tidak membantu jika anda perlu menukar nilai melalui "git config" menggunakan pilihan "--system", "--global" atau "-local". Pilihan baharu "--show-scope" memaparkan konteks definisi berubah-ubah dan boleh digunakan bersama dengan -show-ogin:

    $ git --list --show-scope --show-origin
    fail global:/home/user/.gitconfig diff.interhunkcontext=1
    fail global:/home/user/.gitconfig push.default=current
    […] fail tempatan:.git/config branch.master.remote=origin
    fail tempatan:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    perbezaan global.statgraphwidth 35
    tempatan diff.colormoved plain

    $ git config --global --unset diff.statgraphwidth

  • Dalam tetapan mengikat kelayakan Penggunaan topeng dalam URL dibenarkan. Sebarang tetapan HTTP dan bukti kelayakan dalam Git boleh ditetapkan untuk semua sambungan (http.extraHeader, credential.helper) dan untuk sambungan berasaskan URL (credential.https://example.com.helper, credential.https: //example. com.pembantu). Sehingga kini, kad bebas seperti *.example.com hanya dibenarkan untuk tetapan HTTP, tetapi tidak disokong untuk pengikatan bukti kelayakan. Dalam Git 2.26, perbezaan ini dihapuskan dan, sebagai contoh, untuk mengikat nama pengguna kepada semua subdomain yang kini anda boleh tentukan:

    [kelayakan "https://*.example.com"]

    nama pengguna = ttaylorr

  • Pengembangan sokongan percubaan untuk pengklonan separa (klon separa) diteruskan, membolehkan anda memindahkan hanya sebahagian daripada data dan bekerja dengan salinan repositori yang tidak lengkap. Keluaran baharu menambah arahan baharu "git sparse-checkout add", yang membolehkan anda menambah direktori individu untuk menggunakan operasi "checkout" hanya pada sebahagian daripada pokok kerja, bukannya menyenaraikan semua direktori tersebut sekaligus melalui arahan "git set daftar keluar jarang" (anda boleh menambah satu demi satu direktori, tanpa menyatakan semula keseluruhan senarai setiap kali).
    Sebagai contoh, untuk mengklon repositori git/git tanpa melakukan gumpalan, mengehadkan pembayaran hanya kepada direktori akar salinan kerja dan menandakan keluar secara berasingan untuk direktori "t" dan "Dokumentasi", anda boleh menentukan:

    $ git clone --filter=blob:none --sparse [e-mel dilindungi]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git jarang-keluar tambah t
    ....
    $ git jarang-checkout tambah Dokumentasi
    ....
    $ git senarai daftar keluar jarang
    dokumentasi
    t

  • Prestasi arahan "git grep", yang digunakan untuk mencari kedua-dua kandungan semasa repositori dan semakan sejarah, telah dipertingkatkan dengan ketara. Untuk mempercepatkan carian, adalah mungkin untuk mengimbas kandungan pokok yang berfungsi menggunakan berbilang benang ("git grep –benang"), tetapi carian dalam semakan sejarah adalah satu-benang. Kini had ini telah dialih keluar dengan melaksanakan keupayaan untuk menyelaraskan operasi bacaan daripada storan objek. Secara lalai, bilangan utas ditetapkan sama dengan bilangan teras CPU, yang dalam kebanyakan kes kini tidak memerlukan secara eksplisit menetapkan pilihan "-benang".
  • Menambah sokongan untuk autolengkap input subperintah, laluan, pautan dan argumen lain bagi perintah "git worktree", yang membolehkan anda bekerja dengan beberapa salinan repositori yang berfungsi.
  • Sokongan tambahan untuk warna terang yang mempunyai urutan pelarian ANSI. Sebagai contoh, dalam tetapan untuk warna sorotan β€œgit config –color” atau β€œgit diff –color-moved” anda boleh menentukan β€œ%C(brightblue)” melalui pilihan β€œ--format” untuk biru terang.
  • Menambah versi baharu skrip fsmonitor-penjaga, menyediakan integrasi dengan mekanisme Facebook Watchman untuk mempercepatkan pengesanan perubahan fail dan penampilan fail baharu. Selepas mengemas kini git diperlukan menggantikan cangkuk dalam repositori.
  • Menambahkan pengoptimuman untuk mempercepatkan klon separa apabila menggunakan peta bit
    (mesin bitmap) untuk mengelakkan carian lengkap semua objek semasa menapis output. Menyemak gumpalan (β€”filter=blob:none dan β€”filter=blob:limit=n) semasa pengklonan separa kini dilakukan
    ketara lebih pantas. GitHub mengumumkan patch dengan pengoptimuman ini dan sokongan percubaan untuk pengklonan separa.

  • Perintah "git rebase" telah dialihkan ke bahagian belakang yang berbeza, menggunakan mekanisme 'cantum' lalai (sebelum ini digunakan untuk "rebase -i") dan bukannya 'patch+apply'. Bahagian belakang berbeza dalam beberapa cara kecil, contohnya, selepas meneruskan operasi selepas menyelesaikan konflik (git rebase --continue), bahagian belakang baharu menawarkan untuk mengedit mesej komit, manakala yang lama hanya menggunakan mesej lama. Untuk kembali kepada tingkah laku lama, anda boleh menggunakan pilihan "--apply" atau tetapkan pembolehubah konfigurasi 'rebase.backend' kepada 'apply'.
  • Contoh pengendali untuk parameter pengesahan yang ditentukan melalui .netrc telah dikurangkan kepada bentuk yang sesuai untuk digunakan di luar kotak.
  • Menambahkan tetapan gpg.minTrustLevel untuk menetapkan tahap kepercayaan minimum untuk pelbagai elemen yang melaksanakan pengesahan tandatangan digital.
  • Menambahkan pilihan "--pathspec-from-file" kepada "git rm" dan "git stash".
  • Penambahbaikan suite ujian diteruskan sebagai persediaan untuk peralihan kepada algoritma pencincangan SHA-2 dan bukannya SHA-1.

Sumber: opennet.ru

Tambah komen