Rilis sistem kontrol sumber terdistribusi Git 2.31

Sistem kontrol sumber terdistribusi Git 2.31 kini tersedia. 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 digunakan di setiap penerapan; dimungkinkan juga untuk mengesahkan masing-masing tag dan penerapan dengan tanda tangan digital pengembang.

Dibandingkan dengan rilis sebelumnya, versi baru menyertakan 679 perubahan, disiapkan dengan partisipasi 85 pengembang, 23 di antaranya mengambil bagian dalam pengembangan untuk pertama kalinya. Inovasi utama:

  • Menambahkan perintah β€œgit maintenance”, yang memungkinkan Anda melakukan pekerjaan berkala pada sistem yang tidak mendukung cron. Misalnya dengan menggunakan perintah baru, Anda dapat mengatur agar proses pengemasan repositori berjalan secara berkala, sehingga Anda tidak perlu menunggu hingga repositori terkunci ketika pengemasan dilakukan secara otomatis sambil menjalankan berbagai perintah. Perintah "git maintenance" memungkinkan Anda melakukan pengoptimalan dan operasi untuk mempertahankan struktur optimal repositori di latar belakang, tanpa memblokir sesi interaktif - satu jam sekali, pekerjaan dilakukan untuk secara proaktif mengunduh objek baru dari repositori jarak jauh dan memperbarui file dengan grafik komit, dan proses pengepakan repositori dimulai setiap malam.
  • Menambahkan dukungan untuk mempertahankan indeks terbalik (revindex) pada disk untuk file paket. Ingatlah bahwa Git menyimpan semua data dalam bentuk objek, yang terletak di file terpisah. Untuk meningkatkan efisiensi bekerja dengan repositori, objek juga ditempatkan dalam file paket, di mana informasi disajikan dalam bentuk aliran objek yang mengikuti satu sama lain (format serupa digunakan saat mentransfer objek dengan git ambil dan git push perintah). Untuk setiap file paket, file indeks (.idx) dibuat, yang memungkinkan Anda dengan cepat menentukan offset dalam file paket tempat objek tertentu disimpan menggunakan pengidentifikasi objek. Diperkenalkan di Git 2.31, indeks terbalik (.rev) bertujuan untuk mengoptimalkan proses penentuan pengidentifikasi objek dari informasi tentang penempatan objek dalam file paket.

    Sebelumnya, konversi tersebut dilakukan dengan cepat saat mengurai file paket dan hanya disimpan di memori, yang tidak memungkinkan indeks serupa untuk digunakan kembali dan memaksa indeks untuk dibuat setiap saat. Pengoperasian pembuatan indeks dilakukan dengan membuat array pasangan posisi objek dan mengurutkannya berdasarkan posisi, yang dapat memakan waktu lama untuk file paket besar.

    Misalnya, operasi untuk menampilkan konten objek, yang menggunakan indeks langsung, 62 kali lebih cepat dibandingkan operasi untuk menampilkan ukuran objek, yang data posisi-ke-objeknya tidak diindeks. Setelah menggunakan indeks terbalik, operasi ini mulai memakan waktu kurang lebih sama. Indeks terbalik juga memungkinkan Anda mempercepat operasi pengiriman objek saat menjalankan perintah pengambilan dan push dengan langsung mentransfer data yang sudah jadi dari disk. Secara default, indeks terbalik tidak dibuat; untuk membuatnya, Anda perlu mengaktifkan pengaturan β€œgit config pack.writeReverseIndex true” dan kemudian mengemas repositori dengan perintah β€œgit repack -Ad”.

  • Menambahkan optimalisasi kinerja berdasarkan tampilan dalam format file grafik komit, digunakan untuk mengoptimalkan akses ke informasi tentang komit, data baru tentang nomor pembuatan komit, yang dapat digunakan untuk mempercepat operasi tambahan dengan komit.
  • Menambahkan opsi untuk mendefinisikan ulang nama cabang utama yang digunakan secara default di repositori baru (pengaturan init.defaultBranch). Saat mengakses repositori eksternal, git mencoba memeriksa cabang yang ditunjuk oleh HEAD, yaitu. jika server eksternal menggunakan cabang "utama" secara default, maka operasi "git clone" akan mencoba memeriksa "utama" secara lokal. Git 2.31 sekarang mendukung jenis checkout untuk repositori kosong. Misalnya, ketika mengkloning repositori baru secara lokal sebelum menambahkan patch pertama ke dalamnya, salinan lokal sekarang akan berisi nama upstream default yang ditetapkan di server eksternal.
  • Menambahkan opsi --disk-usage ke perintah "git rev-list" untuk memberikan ringkasan ukuran objek.
  • Untuk mengantisipasi perubahan yang akan datang pada backend penggabungan, deteksi penggantian nama telah dioptimalkan secara signifikan.
  • Dukungan untuk perpustakaan ekspresi reguler PCRE1 lama telah dihentikan.
  • Dimungkinkan untuk secara paksa melarang penggunaan tautan yang diperpendek, apa pun algoritma hashingnya. Larangan diaktifkan dengan menetapkan nilai β€œtidak” ke parameter core.abbrev.
  • Menambahkan opsi "--path-format=(absolute|relative)" ke perintah "git rev-parse" untuk secara eksplisit menentukan apakah jalur relatif atau absolut harus dihasilkan.
  • Skrip penyelesaian Bash memudahkan penambahan aturan penyelesaian untuk subperintah "git" Anda sendiri.
  • Menambahkan opsi --stdin ke perintah "git bundle" untuk membaca referensi dari aliran input standar.
  • Opsi baru telah ditambahkan ke perintah "git log": "--diff-merges=" "
  • Menambahkan opsi "--deduplicationcan" ke perintah "git ls-files" untuk menghilangkan keluaran duplikat.
  • Menambahkan masker baru untuk mengecualikan serangkaian penerapan - " ^!” Dan " ^- "
  • Menambahkan opsi "--left-only" dan "--right-only" ke perintah "git range-diff" untuk menampilkan hanya satu sisi rentang yang dibandingkan.
  • Menambahkan opsi --skip-to= ke perintah "git diff" dan "git log". " dan "β€”putar-ke= Β» untuk melewati atau berpindah ke akhir jalur awal.
  • Menambahkan opsi "--skip-to=" ke perintah "git difftool". Β» untuk melanjutkan sesi yang terputus dari jalur acak.
  • Kode Etik, yang mendefinisikan prinsip-prinsip dasar untuk menyelesaikan situasi konflik antar pengembang, telah diperbarui ke versi 2.0 (sebelumnya digunakan versi 1.4).

    Sumber: opennet.ru

Tambah komentar