Ngaleupaskeun sistem kontrol sumber disebarkeun Git 2.22

Diwanohkeun sékrési sistem kontrol sumber disebarkeun git 2.22.0. Git mangrupikeun salah sahiji sistem kontrol versi anu pang populerna, dipercaya sareng berprestasi tinggi, nyayogikeun alat pangembangan non-linier anu fleksibel dumasar kana cabang sareng ngahiji. Pikeun mastikeun integritas sajarah jeung lalawanan kana parobahan retroactive, hashing implisit tina sakabéh sajarah saméméhna dina unggal commit dipaké, sarta eta oge mungkin pikeun ngajamin tag individu jeung commits kalawan tanda tangan digital pamekar.

Dibandingkeun sareng sékrési sateuacana, versi énggal kalebet 745 parobihan, disiapkeun sareng partisipasi 74 pamekar, dimana 18 mimitina nyandak bagian dina pangwangunan. utama inovasi:

  • Sadia ti saprak release 1.18, nu anyar commit rebase mode "git rebase --rebase-merges" ngagantikeun heubeul "--preserve-merges" pilihan, nu ayeuna deprecated. Operasi "git rebase" dianggo pikeun ngagentos séri commit sareng commit dasar énggal, contona, pikeun mindahkeun cabang anu misah anu ngembangkeun sababaraha fitur énggal kana kaayaan cabang master ayeuna, anu kalebet perbaikan anu ditambah saatos cabang. :

    o - o - o (fitur abdi)

    /

    o - o - o - o - o (guru)

    o - o - o (fitur abdi)

    /

    o - o - o - o - o (guru)

    Pikeun ngawétkeun struktur cabang dina cabang migrasi, pilihan "--preserve-merges" saméméhna bisa dipaké, nu, nalika dijalankeun dina modeu interaktif (git rebase -i --preserve-merges), diwenangkeun ngédit sajarah commit, tapi teu ngajamin pelestarian lengkep struktur gudang. Modeu "--rebase-merges" anyar ngamungkinkeun anjeun pikeun ngawétkeun struktur parobihan dina cabang anu dimigrasikeun, bari nyayogikeun sajumlah operasi interaktif, kalebet ngahapus, ngahijikeun deui sareng ngarobih nami commits.

    Contona, "--rebase-merges" Hal ieu ngamungkinkeun ulang unggah commits ti cabang misah ka cabang master anyar, bari ngajaga struktur cabang dina cabang hijrah, sarta nyieun sababaraha parobahan catetan commit on laleur nu.

  • Ditambahkeun dukungan pikeun nyiptakeun cabang énggal dumasar kana hasil tina nangtukeun dasar gabungan dua cabang anu sanés (ngahijikeun dasar, ngariung ka karuhun umum) nganggo konstruksi "git branch new A...B" sareng "git checkout -b new. A...B", dimana "A ...B" ngalibatkeun netepkeun dasar gabungan antara dua komitmen anu ditangtukeun, sami sareng kumaha "git checkout A...B" ngagentos HEAD ka commit dasar sareng "diff A. ..B" nembongkeun parobahan antara commit "B" jeung sarua commit "A" "Karuhun.

    Salaku conto, nalika damel dina cabang my-feature anu misah, fitur ieu tiasa dianggo nalika anjeun badé ngamimitian ti cabang anu béda, contona, ti tempat anu sami dina cabang master dimana cabang my-feature dipariksa. Saméméhna, ieu diperlukeun sacara manual examining log robah, nu teu merenah lamun boga sajarah badag parobahan, lajeng ngajalankeun "git merge-base master my-fitur" pikeun ngitung hash tina dasar merge antara master na my-fitur cabang. sarta nyieun cabang anyar relatif ka karuhun umum " git branch my-other-feature hash." Dina Git 2.22, anjeun tiasa nganggo sintaksis "git branch my-other-feature A...B" pikeun nyiptakeun cabang anu aya hubunganana sareng dasar gabungan dua cabang anu sanés;

  • Ditambahkeun "git branch --show-current" pilihan pikeun mintonkeun nami cabang diala salila operasi Checkout;
  • Ditambahkeun pilihan "git checkout -no-overlay - dir", anu ngamungkinkeun, nalika ngalaksanakeun operasi pamariksaan, nyangking eusi diréktori dir kana bentuk anu saluyu sareng kaayaan cabang master. Salaku conto, upami aya file dina salinan lokal diréktori dir anu henteu aya dina cabang master, maka sacara standar nalika ngalaksanakeun "git checkout master - dir" bakal ditinggalkeun, sareng upami "--no-overlay" "Pilihan ditetepkeun, éta bakal dipupus;
  • Paréntah "git diff" ngagunakeun API universal pikeun pilihan parsing, anu ngamungkinkeun pikeun ngahijikeun penanganan pilihan sareng utilitas git anu sanés. Salaku conto, dina "git diff", sadaya pilihan ayeuna gaduh antagonisna ("--function-context" sareng "--no-function-context");
  • Ditambahkeun kamampuan pikeun nyaring tag anu diperpanjang anu dipasang dina commits dina kaluaran "git log" ("trailer" - bendera inpormasi tambahan, sapertos Signed-off-by sareng Co-authored-by). Kasebut nyaéta dimungkinkeun pikeun nyaring labél ku konci sareng nilai, contona:
    "git log --pretty="%(trailers:key=Diulas-ku,valueonly)";

  • Mesin ngalacak énggal, Trace2, parantos nambihan, nawiskeun format kaluaran anu langkung fleksibel sareng terstruktur. Trace2 ngidinan Anjeun pikeun ngumpulkeun telemétri ngeunaan operasi dieksekusi jeung data kinerja pikeun analisis leuwih lengkep tur debugging (handler ditugaskeun ku pamaké, euweuh data dikirim externally);
  • Laporan "git bisect" geus dijieun leuwih bisa dibaca, nu commits masalah ayeuna leuwih jelas disorot sarta kasimpulan statistik dina parobahan pikeun tiap file ditampilkeun (dina tingkat jumlah garis robah);
  • Heuristik pikeun nangtukeun ganti ngaran diréktori parantos didamel deui pikeun ngaleungitkeun pamasangan palsu pikeun ngaganti nami labél. Nalika di mamang, directories sapertos ayeuna ditandaan salaku conflicting;
  • Peringatan dipintonkeun nalika anjeun nyobian masang tag dina tag anu sanés, anu biasana dilakukeun ku kasalahan sareng tiasa nyababkeun netepkeun tag dina komitmen anu salah (contona, konstruksi sapertos "git tag -f -m" pesen anu diropéa" my-tag1 my- tag2″ bakal ngahasilkeun tag anu didamel dina tag anu lami, sedengkeun pamekar ngaharepkeun tag énggal dipasang dina komitmen anu ditunjuk ku tag anu lami);
  • Generasi diaktipkeun pikeun repositories bitmap (struktur "reachability bitmaps" basis disk), nu nyimpen data ngeunaan susunan objék sadia pikeun tiap commit tur ngidinan Anjeun pikeun gancang nangtukeun ayana objék dasar. Struktur ieu sacara signifikan ngirangan waktos palaksanaan operasi panéangan data (git fetch).

sumber: opennet.ru

Tambahkeun komentar