Rilis sistem kontrol sumber sing disebarake Git 2.22

Dipuntepangaken release saka sistem kontrol sumber disebaraké git 2.22.0. Git minangka salah sawijining sistem kontrol versi sing paling populer, dipercaya, lan kinerja dhuwur sing nyedhiyakake alat pangembangan non-linear sing fleksibel adhedhasar cabang cabang lan gabung. Kanggo mesthekake integritas sajarah lan resistance kanggo owah-owahan ing hindsight, hashing implisit saka kabeh sajarah sadurungé ing saben commit digunakake, iku uga bisa kanggo verifikasi teken digital saka pangembang tag individu lan commits.

Dibandhingake karo release sadurungé, 745 owah-owahan ditampa ing versi anyar, disiapake karo partisipasi 74 pangembang, kang 18 njupuk bagéyan ing pembangunan kanggo pisanan. Utama inovasi:

  • Kasedhiya wiwit rilis 1.18, mode migrasi commit anyar "git rebase --rebase-merges" wis ngganti opsi "--preserve-merges" lawas, sing saiki wis ora digunakake. Operasi "git rebase" digunakake kanggo ngganti seri commit karo commit basis anyar, contone, kanggo mindhah cabang siji sing ngembangake sawetara fitur anyar menyang kahanan saiki cabang master, sing kalebu perbaikan sing ditambahake sawise cabang:

    o - o - o (fiturku)

    /

    o - o - o - o - o (master)

    o - o - o (fiturku)

    /

    o - o - o - o - o (master)

    Kanggo ngreksa struktur cabang ing cabang migrasi, opsi "--preserve-merges" sadurunge bisa digunakake, sing, nalika mbukak ing mode interaktif (git rebase -i --preserve-merges ), ngidini nyunting riwayat commit, nanging ora njamin pengawetan lengkap struktur gudang. Panggantos "--rebase-merges" mode ngijini sampeyan kanggo njaga struktur owah-owahan ing cabang migrasi, nalika nyediakake pesawat lengkap operasi interaktif, kalebu mbusak, regrouping, lan ngganti jeneng commits.

    Contone, "--rebase-merges" Nanging ngidini push maneh nindakake saka cabang kapisah menyang cabang master anyar nalika tetep struktur cabang ing cabang migrasi, lan nggawe sawetara owah-owahan ing cathetan commit nalika sampeyan lunga.

  • Dhukungan tambahan kanggo nggawe cabang anyar adhedhasar asil nemtokake basis gabungan saka rong cabang liyane (nggabungake basis, ngiket karo leluhur sing umum) nggunakake "git branch new A…B" lan "git checkout -b new A…B" "Konstruksi, ing ngendi "A ...B" tegese nemtokake basis gabungan antarane rong komit sing ditemtokake, padha karo carane "git checkout A ... B" ngalih HEAD menyang komit dasar lan "beda A ... B" nuduhake owah-owahan antarane commit "B" lan sing dienggo bareng karo commit "A". » leluhur.

    Contone, nalika nggarap cabang my-fitur sing kapisah, fitur sing diusulake bisa digunakake nalika sampeyan pengin miwiti saka cabang liyane, contone, saka panggonan sing padha ing cabang master saka ngendi cabang fitur saya dicenthang. Sadurunge, iki mbutuhake mriksa changelog kanthi manual, sing ora trep nalika ana riwayat owah-owahan gedhe, banjur nindakake "git merge-base master my-feature" kanggo ngetung hash basis gabungan ing antarane cabang master lan my-feature, lan nggawe cabang anyar relatif kanggo leluhur umum "git branch my-other-feature hash". Ing Git 2.22, sintaks "git branch my-other-feature A…B" bisa digunakake kanggo nggawe cabang sing relatif marang basis gabungan saka rong cabang liyane;

  • Nambahake opsi "git branch --show-current" kanggo nampilake jeneng cabang sing dipikolehi saka operasi checkout;
  • Nambahake pilihan "git checkout --no-overlay -- dir", sing ngidini, nalika nindakake operasi checkout, nggawa isi direktori dir menyang formulir sing cocog karo kahanan cabang master. Contone, yen ana file ing salinan lokal direktori dir sing ora ana ing cabang master, banjur kanthi standar nalika nglakokake "git checkout master - dir" bakal ditinggalake, lan nalika "--no-overlay" "Opsi kasebut ditemtokake, bakal dibusak;
  • Printah "git diff" nggunakake API parsing opsi umum kanggo nyawiji pangolahan pilihan karo utilitas git liyane. Contone, ing "git diff" kabeh opsi saiki duwe antagonis sing kasedhiya ("--function-context" lan "--no-function-context");
  • Nambahake kemampuan kanggo nyaring nalika ngasilake tag lengkap "git log" sing dipasang ing commits ("trailer" - panji informasi tambahan, kayata Signed-off-by lan Co-authored-by). Sampeyan bisa nyaring label kanthi kunci lan nilai, contone:
    "git log --pretty="%(trailer:key=Reviewed-by,valueonly)";

  • Mesin pelacak anyar, Trace2, wis ditambahake, nawakake format output sing luwih fleksibel lan terstruktur. Trace2 ngidini sampeyan ngumpulake telemetri babagan operasi sing ditindakake lan data kinerja kanggo analisis lan debugging sing luwih rinci (pantangan ditugasake dening pangguna, ora ana data sing dikirim ing njaba);
  • Nggawe laporan "git bisect" luwih bisa diwaca, sing saiki luwih jelas nyorot komitmen sing ana masalah lan nampilake statistik ringkesan babagan owah-owahan kanggo saben file (ing tingkat jumlah baris sing diganti);
  • Heuristik kanggo ndeteksi ganti jeneng direktori wis didesain ulang kanggo ngindhari setelan ganti jeneng sing salah. Yen ana keraguan, direktori kasebut saiki ditandhani minangka konflik;
  • Bebaya diwenehake nalika nyoba nyetel tag menyang tag liyane, sing, minangka aturan, ditindakake kanthi ora sengaja lan bisa nyebabake nyetel tag ing komitmen sing salah (contone, konstruksi kaya "git tag -f -m " pesen sing dianyari "my-tag1 my- tag2" bakal nyebabake tag digawe ing tag lawas, nalika pangembang ngarepake tag anyar bakal disetel ing komitmen sing ditunjuk dening tag lawas);
  • Generasi diaktifake kanggo repositori bitmap (struktur disk "bitmaps keterjangkauan") sing nyimpen data babagan set obyek sing kasedhiya kanggo saben commit lan ngidini sampeyan nemtokake kanthi cepet ana obyek sing ndasari. Struktur sing ditemtokake sacara signifikan nyuda wektu eksekusi operasi ekstraksi data (git fetch).

Source: opennet.ru

Add a comment