Rilis kontrol sumber Git 2.38

Rilis sistem kontrol sumber terdistribusi Git 2.38 telah diumumkan. 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 699 perubahan yang disiapkan dengan partisipasi 92 pengembang, 24 di antaranya mengambil bagian dalam pengembangan untuk pertama kalinya. Inovasi utama:

  • Struktur utama mencakup utilitas β€œskalar”, yang dikembangkan oleh Microsoft untuk mengelola repositori besar. Utilitas ini awalnya ditulis dalam C#, tetapi git menyertakan versi modifikasi dalam C. Utilitas baru ini berbeda dari perintah git dengan mengaktifkan fitur dan pengaturan tambahan secara default yang memengaruhi kinerja saat bekerja dengan repositori yang sangat besar. Misalnya, saat menggunakan skalar, berlaku:
    • Kloning sebagian untuk bekerja dengan salinan repositori yang tidak lengkap.
    • Mekanisme bawaan untuk melacak perubahan dalam sistem file (FSMonitor), yang memungkinkan Anda melakukannya tanpa mencari seluruh direktori kerja.
    • Indeks yang mencakup objek dalam file paket berbeda (multi-paket).
    • file grafik komit dengan indeks grafik komit yang digunakan untuk mengoptimalkan akses ke informasi komit.
    • Pekerjaan berkala di latar belakang untuk mempertahankan struktur optimal repositori di latar belakang, tanpa menghalangi sesi interaktif (pekerjaan dilakukan satu jam sekali untuk secara proaktif mengunduh objek baru dari repositori jarak jauh dan memperbarui file dengan grafik komit, dan proses pengepakan repositori dimulai setiap malam).
    • mode "sparseCheckoutCone", yang membatasi pola yang diizinkan selama kloning parsial.
  • Menambahkan opsi --update-refs ke perintah "git rebase" untuk memperbarui cabang dependen yang tumpang tindih dengan cabang yang dipindahkan, daripada harus melakukan checkout secara manual setiap cabang dependen untuk beralih ke penerapan yang diperlukan.
  • Membuat perintah "git rm" kompatibel dengan indeks parsial.
  • Memperbaiki perilaku perintah "git mv A B" saat memindahkan file dari ruang kerja dengan indeks parsial dalam mode "kerucut" ke cakupan luar yang tidak memiliki mode ini.
  • Format file bitmap telah dioptimalkan untuk bekerja dengan repositori besar - tabel indeks opsional telah ditambahkan dengan daftar komitmen yang dipilih dan offsetnya.
  • Perintah "git merge-tree" mengimplementasikan mode baru di mana, berdasarkan dua penerapan yang ditentukan, pohon dengan hasil penggabungan dihitung, seolah-olah riwayat penerapan ini digabungkan.
  • Menambahkan pengaturan "safe.barerepository" untuk mengontrol kemampuan menghosting repositori kosong (repositori yang tidak berisi pohon yang berfungsi) di dalam repositori git lainnya. Jika disetel ke "eksplisit", Anda dapat bekerja dengan repositori kosong yang hanya terletak di direktori teratas. Untuk dapat menempatkan repositori kosong di subdirektori, gunakan nilai β€œsemua”.
  • Perintah β€œgit grep” telah menambahkan opsi β€œ-m” (β€œβ€”max-count”), yang mirip dengan opsi dengan nama yang sama di GNU grep dan memungkinkan Anda membatasi jumlah kecocokan yang ditampilkan.
  • Perintah β€œls-files” mengimplementasikan opsi β€œ--format” untuk mengonfigurasi bidang keluaran (misalnya, Anda dapat mengaktifkan keluaran nama objek, mode, dll.).
  • Dalam "git cat-file", saat menampilkan konten objek, dimungkinkan untuk memperhitungkan ikatan penulis-email yang ditentukan dalam file mailmap.

Sumber: opennet.ru

Tambah komentar