Rilis sistem kontrol sumber terdistribusi Git 2.25

Tersedia rilis sistem kontrol sumber terdistribusi Git 2.25.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 583 perubahan, disiapkan dengan partisipasi 84 pengembang, 32 di antaranya mengambil bagian dalam pengembangan untuk pertama kalinya. Utama inovasi:

  • Klon parsial, yang memungkinkan Anda mentransfer hanya sebagian data dan bekerja dengan salinan repositori yang tidak lengkap, hampir mencapai stabilisasi dan ketersediaan penuh. Klon tipikal menyalin semua data dari repositori, termasuk setiap versi dari setiap berkas dalam riwayat revisi. Untuk repositori yang sangat besar, menyalin data secara signifikan meningkatkan bandwidth dan ruang disk, meskipun pengembang hanya tertarik pada sebagian berkas. Untuk menyederhanakan pengambilan hanya sebagian dari pohon sumber yang berfungsi, rilis baru ini memperkenalkan perintah eksperimental "sparse-checkout" dan opsi "--sparse" baru untuk perintah "clone".

    Sebelumnya, proses kloning selektif dilakukan melalui tugas filter untuk memfilter konten yang tidak perlu dan opsi "--no-checkout" untuk menonaktifkan pengisian ulang berkas yang hilang. Setelah itu, sebelum melakukan operasi checkout, pengaturan core.sparseCheckout perlu diaktifkan dan daftar pola jalur yang akan dikecualikan dalam berkas .git/info/sparse-checkout harus ditentukan. Misalnya, untuk mengkloning tanpa blob dan mencegah berkas diekstraksi dari direktori bersarang dengan kedalaman 2 atau lebih, Anda dapat menjalankan:

    git clone --filter=blob:none --no-checkout /repositori/Anda/di sini repo
    $cd repo
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Perintah "git sparse-checkout" yang baru menyederhanakan alur kerja secara signifikan dan mengurangi proses pengorganisasian pekerjaan dengan repositori yang tidak lengkap menjadi perintah-perintah berikut:

    git clone --filter=blob:none --sparse /repositori/Anda/di sini repo
    git sparse-checkout set /jalur/ke/check/out

    Perintah sparse-checkout memungkinkan Anda untuk menetapkan daftar jalur yang akan diperiksa (set) tanpa mengonfigurasi .git/info/sparse-checkout secara manual, serta mencetak daftar jalur saat ini (list) dan mengaktifkan atau menonaktifkan pemeriksaan sebagian (enable/disable).

    Untuk mengoptimalkan pekerjaan dengan repositori dan daftar templat yang sangat besar, "git config core.sparseCheckoutCone", yang membatasi pola yang diizinkan (alih-alih pola .gitignore yang sembarangan, Anda dapat menentukan apakah semua jalur dan semua berkas dalam subdirektori tertentu harus diperiksa). Misalnya, jika repositori besar berisi direktori "A/B/C" dan semua pekerjaan terkonsentrasi di subdirektori "C", maka ketika mode sparseCheckoutCone diaktifkan, perintah "git sparse-checkout set A/B/C" akan memeriksa seluruh isi "C", tetapi dari "A" dan "B" hanya akan memeriksa bagian yang diperlukan untuk bekerja dengan "C".

  • Dokumentasi (git rebase -h) telah menghapus semua referensi ke opsi "--preserve-merges", yang telah ditinggalkan dan harus diganti dengan "git rebase --rebase-gabungan".
  • Untuk meningkatkan keterbacaan pesan patch yang dikirim ke milis, opsi "git format-patch --cover-from-description subject" telah ditambahkan. Jika ditentukan, opsi ini menggunakan paragraf pertama teks deskripsi cabang sebagai subjek surat pengantar untuk set patch.
  • Dukungan yang diterapkan untuk penggunaan gabungan perintah "git apply --3way" dan pengaturan "merge.conflictStyle" ("git apply" sekarang memperhitungkan gaya deskripsi konflik dari merge.conflictStyle saat menyelesaikan konflik setelah mencoba menerapkan berkas patch ke repositori).
  • Kode definisi fungsi yang digunakan dalam operasi seperti git diff/grep --show-function/--function-context telah diperluas untuk mendukung pendefinisian batasan fungsi dalam program yang ditulis dalam Eliksir.
  • Opsi baru "--pathspec-from-file" telah ditambahkan ke "git add", "git commit", "git reset" dan perintah lainnya, yang memungkinkan Anda memuat daftar jalur dari file atau aliran input, alih-alih mencantumkannya pada baris perintah.
  • Masalah dengan deteksi penggantian nama tingkat direktori selama proses komit telah teratasi. Deteksi ini gagal saat memindahkan konten subdirektori ke root repositori.
  • Implementasi awal perintah "git add -i" yang ditulis ulang, yang memungkinkan penambahan konten yang dimodifikasi secara interaktif, telah diusulkan, ditulis ulang dari Perl ke C. Penulisan ulang serupa untuk perintah "git add -p" sedang berlangsung.
  • Perintah "git log --graph", yang menghasilkan citra ASCII grafik berisi riwayat perubahan repositori, telah difaktorkan ulang. Pemfaktoran ulang ini secara signifikan meningkatkan dan menyederhanakan keluaran tanpa mendistorsi struktur riwayat, yang, misalnya, menyelesaikan masalah di mana grafik akan melebihi lebar baris terminal.
  • Opsi "git log --format=.." memungkinkan Anda mengubah format keluaran,
    Dukungan yang diperluas untuk tanda "l/L" agar hanya menampilkan bagian alamat email yang ditentukan sebelum simbol "@" (misalnya, berguna ketika semua pengembang memiliki email di domain yang sama).
  • Menambahkan subperintah “set-url” ke perintah “git submodule”.
  • Peralatan tes telah diperbarui sebagai persiapan untuk transisi ke
    Algoritma hashing SHA-2, bukan SHA-1.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster