Keluaran sistem kawalan sumber teragih Git 2.22

Dikemukakan oleh pelepasan sistem kawalan sumber teragih Git 2.22.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 dalam setiap komit digunakan, dan ia juga mungkin untuk memperakui teg individu dan komit dengan tandatangan digital pembangun.

Berbanding dengan keluaran sebelumnya, versi baharu itu termasuk 745 perubahan, disediakan dengan penyertaan 74 pembangun, di mana 18 daripadanya mengambil bahagian dalam pembangunan buat kali pertama. Utama inovasi:

  • Tersedia sejak keluaran 1.18, mod rebase komit baharu "git rebase --rebase-merges" menggantikan pilihan "--preserve-merges" lama, yang kini tidak digunakan lagi. Operasi "git rebase" digunakan untuk menggantikan satu siri komit dengan komit asas baharu, sebagai contoh, untuk mengalihkan cawangan berasingan yang sedang membangunkan beberapa ciri baharu kepada keadaan semasa cawangan induk, yang termasuk pembetulan ditambah selepas cawangan :

    o - o - o (ciri saya)

    /

    o - o - o - o - o (tuan)

    o - o - o (ciri saya)

    /

    o - o - o - o - o (tuan)

    Untuk mengekalkan struktur cawangan dalam cawangan yang dipindahkan, pilihan "--preserve-merges" sebelum ini boleh digunakan, yang, apabila dijalankan dalam mod interaktif (git rebase -i --preserve-merges), membenarkan penyuntingan sejarah komit, tetapi tidak menjamin pemeliharaan lengkap struktur repositori. Mod "--rebase-merges" baharu membolehkan anda mengekalkan struktur perubahan dalam cawangan yang sedang dipindahkan, sambil menyediakan rangkaian penuh operasi interaktif, termasuk pemadaman, pengumpulan semula dan penamaan semula komit.

    Contohnya, "--rebase-merges" membolehkan muat naik semula komit daripada cawangan berasingan kepada cawangan induk yang lebih baharu, sambil mengekalkan struktur cawangan dalam cawangan yang dipindahkan, dan membuat beberapa perubahan pada nota komit dengan cepat.

  • Menambah sokongan untuk mencipta cawangan baharu berdasarkan hasil penentuan pangkalan gabungan dua cawangan lain (pangkalan gabungan, mengikat kepada nenek moyang yang sama) menggunakan pembinaan β€œgit branch new A...B” dan β€œgit checkout -b new A...B”, di mana "A ...B" melibatkan penentuan asas gabungan antara dua komit yang ditentukan, sama seperti cara "git checkout A...B" mengalihkan HEAD kepada komit asas dan "diff A. ..B" menunjukkan perubahan antara komit "B" dan sama seperti komit "A" "Ancestor.

    Sebagai contoh, apabila bekerja pada cawangan ciri saya yang berasingan, ciri ini boleh digunakan apabila anda ingin bermula dari cawangan lain, contohnya, dari tempat yang sama dalam cawangan induk yang mana cawangan ciri saya telah diperiksa keluar. Sebelum ini, ini memerlukan pemeriksaan secara manual log perubahan, yang menyusahkan jika anda mempunyai sejarah perubahan yang besar, kemudian menjalankan "git merge-base master my-feature" untuk mengira cincang asas gabungan antara cabang master dan my-feature dan mencipta cawangan baharu yang berkaitan dengan leluhur biasa " git branch my-other-feature hash." Dalam Git 2.22, anda boleh menggunakan sintaks "git branch my-other-feature A...B" untuk mencipta cawangan berbanding asas gabungan dua cawangan lain;

  • Menambahkan pilihan "git branch --show-current" untuk memaparkan nama cawangan yang diperoleh semasa operasi pembayaran;
  • Menambahkan pilihan "git checkout β€”no-overlay β€” dir”, yang membenarkan, semasa menjalankan operasi checkout, untuk membawa kandungan direktori dir ke borang yang sepadan sepenuhnya dengan keadaan cawangan induk. Sebagai contoh, jika terdapat fail dalam salinan tempatan direktori dir yang tiada dalam cawangan induk, maka secara lalai apabila melaksanakan β€œgit checkout master - dir” ia akan ditinggalkan, dan jika β€œ--no-overlay ” pilihan ditentukan, ia akan dipadamkan;
  • Perintah "git diff" menggunakan API universal untuk menghurai pilihan, yang memungkinkan untuk menyatukan pengendalian pilihan dengan utiliti git lain. Contohnya, dalam "git diff", semua pilihan kini mempunyai antagonisnya ("--function-context" dan "--no-function-context");
  • Menambahkan keupayaan untuk menapis teg lanjutan yang dilampirkan pada komit dalam output "log git" ("treler" - bendera maklumat tambahan, seperti Ditandatangani-dimatikan-oleh dan Dikarang-oleh). Anda boleh menapis label mengikut kedua-dua kunci dan nilai, contohnya:
    "git log --pretty="%(trailer:key=Disemak-oleh,valueonly)";

  • Enjin pengesanan baharu, Trace2, telah ditambah, menawarkan format keluaran yang lebih fleksibel dan berstruktur. Trace2 membolehkan anda mengumpul telemetri mengenai operasi yang dilaksanakan dan data prestasi untuk analisis dan penyahpepijatan yang lebih terperinci (pengendali ditugaskan oleh pengguna, tiada data dihantar secara luaran);
  • Laporan "git bisekt" telah dibuat lebih mudah dibaca, di mana komitmen yang bermasalah kini diserlahkan dengan lebih jelas dan statistik ringkasan tentang perubahan untuk setiap fail dipaparkan (pada tahap bilangan baris yang diubah);
  • Heuristik untuk menentukan penamaan semula direktori telah diolah semula untuk menghapuskan pemasangan palsu label penamaan semula. Apabila ragu-ragu, direktori tersebut kini ditandakan sebagai bercanggah;
  • Amaran dipaparkan apabila anda cuba memasang teg pada teg lain, yang biasanya dilakukan secara tidak sengaja dan boleh menyebabkan penetapan teg pada komit yang salah (contohnya, pembinaan seperti "git tag -f -m "mesej dikemas kini" my-tag1 my- tag2β€³ akan menyebabkan teg dicipta pada teg lama, manakala pembangun menjangkakan teg baharu akan dipasang pada komit yang ditunjukkan oleh teg lama);
  • Penjanaan didayakan untuk repositori bitmap (struktur "peta bit kebolehcapaian" berasaskan cakera), yang menyimpan data tentang set objek yang tersedia untuk setiap komit dan membolehkan anda menentukan dengan cepat kehadiran objek asas. Struktur ini mengurangkan dengan ketara masa pelaksanaan operasi pengambilan data (git fetch).

Sumber: opennet.ru

Tambah komen