Rilis sistem kontrol sumber terdistribusi Git 2.26

Tersedia rilis sistem kontrol sumber terdistribusi Git 2.26.0. 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 di setiap penerapan digunakan, dan juga dimungkinkan untuk mengesahkan masing-masing tag dan penerapan dengan tanda tangan digital pengembang.

Dibandingkan dengan rilis sebelumnya, versi baru menyertakan 504 perubahan, disiapkan dengan partisipasi 64 pengembang, 12 di antaranya mengambil bagian dalam pengembangan untuk pertama kalinya. Utama inovasi:

  • Defaultnya telah dialihkan ke versi kedua Protokol komunikasi Git, yang digunakan saat klien terhubung dari jarak jauh ke server Git. Versi kedua dari protokol ini terkenal karena menyediakan kemampuan untuk memfilter cabang dan tag di sisi server, mengembalikan daftar tautan yang dipersingkat ke klien. Sebelumnya, perintah pull apa pun akan selalu mengirimkan kepada klien daftar lengkap referensi di seluruh repositori, bahkan ketika klien hanya memperbarui satu cabang atau memeriksa apakah salinan repositori mereka sudah yang terbaru. Inovasi penting lainnya adalah kemampuan untuk menambahkan kemampuan baru pada protokol saat fungsionalitas baru tersedia di toolkit. Kode klien tetap kompatibel dengan protokol lama dan dapat terus bekerja dengan server baru dan lama, secara otomatis kembali ke versi pertama jika server tidak mendukung versi kedua.
  • Opsi “-show-scope” telah ditambahkan ke perintah “git config”, membuatnya lebih mudah untuk mengidentifikasi tempat di mana pengaturan tertentu ditentukan. Git memungkinkan Anda menentukan pengaturan di tempat berbeda: di repositori (.git/info/config), di direktori pengguna (~/.gitconfig), di file konfigurasi seluruh sistem (/etc/gitconfig), dan melalui perintah opsi garis dan variabel lingkungan. Saat menjalankan "git config" cukup sulit untuk memahami di mana tepatnya pengaturan yang diinginkan ditentukan. Untuk mengatasi masalah ini, opsi “--show-origin” tersedia, tetapi hanya menampilkan jalur ke file yang pengaturannya ditentukan, yang berguna jika Anda ingin mengedit file, tetapi tidak membantu jika Anda perlu mengubah nilainya melalui "git config" menggunakan opsi "--system", "--global" atau "-local". Opsi baru "--show-scope" menampilkan konteks definisi variabel dan dapat digunakan bersama dengan -show-origin:

    $ git --daftar --show-scope --show-origin
    file global:/home/user/.gitconfig diff.interhunkcontext=1
    file global:/home/user/.gitconfig push.default=saat ini
    […] file lokal:.git/config Branch.master.remote=origin
    file lokal:.git/config Branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    perbedaan global.statgraphwidth 35
    diff lokal.warna dipindahkan polos

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

  • Dalam pengaturan pengikatan kredensial Penggunaan masker di URL diperbolehkan. Pengaturan HTTP dan kredensial apa pun di Git dapat diatur untuk semua koneksi (http.extraHeader, credential.helper) dan untuk koneksi berbasis URL (credential.https://example.com.helper, credential.https: //example. com.helper). Hingga saat ini, wildcard seperti *.example.com hanya diperbolehkan untuk pengaturan HTTP, namun tidak didukung untuk pengikatan kredensial. Di Git 2.26, perbedaan ini dihilangkan dan, misalnya, untuk mengikat nama pengguna ke semua subdomain, kini Anda dapat menentukan:

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

    nama pengguna = ttaylorr

  • Perluasan dukungan eksperimental untuk kloning parsial (partial clones) terus berlanjut, memungkinkan Anda untuk mentransfer hanya sebagian data dan bekerja dengan salinan repositori yang tidak lengkap. Rilis baru menambahkan perintah baru "git sparse-checkout add", yang memungkinkan Anda menambahkan direktori individual untuk menerapkan operasi "checkout" hanya ke sebagian dari pohon kerja, alih-alih mencantumkan semua direktori tersebut sekaligus melalui perintah "git set sparse-checkout" (Anda dapat menambahkan satu per satu direktori, tanpa menentukan ulang seluruh daftar setiap kali).
    Misalnya, untuk mengkloning repositori git/git tanpa melakukan blob, membatasi checkout hanya pada direktori akar copy pekerjaan, dan secara terpisah menandai checkout untuk direktori "t" dan "Dokumentasi", Anda dapat menentukan:

    $ git clone --filter=gumpalan:tidak ada --jarang [email dilindungi]:git/git.git

    $cdgit
    $ git sparse-checkout init --kerucut

    $ git sparse-checkout tambahkan t
    ....
    $ git sparse-checkout tambahkan Dokumentasi
    ....
    $ git daftar pembayaran jarang
    Dokumentasi
    t

  • Kinerja perintah “git grep”, yang digunakan untuk mencari konten repositori saat ini dan revisi historis, telah ditingkatkan secara signifikan. Untuk mempercepat pencarian, dimungkinkan untuk memindai konten pohon kerja menggunakan beberapa thread (“git grep –threads”), tetapi pencarian dalam revisi historis adalah single-thread. Sekarang batasan ini telah dihilangkan dengan menerapkan kemampuan untuk memparalelkan operasi pembacaan dari penyimpanan objek. Secara default, jumlah thread diatur sama dengan jumlah inti CPU, yang dalam banyak kasus sekarang tidak memerlukan pengaturan opsi “-threads” secara eksplisit.
  • Menambahkan dukungan untuk pelengkapan otomatis input subperintah, jalur, tautan, dan argumen lain dari perintah "git worktree", yang memungkinkan Anda bekerja dengan beberapa copy pekerjaan repositori.
  • Menambahkan dukungan untuk warna cerah yang memiliki escape sequence ANSI. Misalnya, dalam pengaturan warna highlight “git config –color” atau “git diff –color-moved” Anda dapat menentukan “%C(brightblue)” melalui opsi “--format” untuk biru cerah.
  • Menambahkan skrip versi baru fsmonitor-penjaga, menyediakan integrasi dengan mekanisme Penjaga Facebook untuk mempercepat pelacakan perubahan file dan kemunculan file baru. Setelah memperbarui git diperlukan заменить kait di repositori.
  • Menambahkan pengoptimalan untuk mempercepat kloning parsial saat menggunakan bitmap
    (mesin bitmap) untuk menghindari pencarian lengkap semua objek saat memfilter output. Pemeriksaan blob (—filter=blob:none dan —filter=blob:limit=n) selama kloning parsial kini dilakukan
    jauh lebih cepat. GitHub mengumumkan patch dengan optimasi ini dan dukungan eksperimental untuk kloning parsial.

  • Perintah "git rebase" telah dipindahkan ke backend berbeda yang menggunakan mekanisme 'merge' default (sebelumnya digunakan untuk "rebase -i") alih-alih 'patch+apply'. Backend berbeda dalam beberapa hal kecil, misalnya, setelah melanjutkan operasi setelah menyelesaikan konflik (git rebase --continue), backend baru menawarkan untuk mengedit pesan komit, sedangkan backend lama hanya menggunakan pesan lama. Untuk kembali ke perilaku lama, Anda dapat menggunakan opsi "--apply" atau mengatur variabel konfigurasi 'rebase.backend' ke 'apply'.
  • Contoh penangan untuk parameter autentikasi yang ditentukan melalui .netrc telah direduksi menjadi bentuk yang sesuai untuk digunakan secara langsung.
  • Menambahkan pengaturan gpg.minTrustLevel untuk menetapkan tingkat kepercayaan minimum untuk berbagai elemen yang melakukan verifikasi tanda tangan digital.
  • Menambahkan opsi "--pathspec-from-file" ke "git rm" dan "git stash".
  • Peningkatan rangkaian pengujian dilanjutkan sebagai persiapan transisi ke algoritma hashing SHA-2, bukan SHA-1.

Sumber: opennet.ru

Tambah komentar