Toleo la udhibiti wa chanzo cha Git 2.36

Baada ya miezi mitatu ya maendeleo, mfumo wa udhibiti wa chanzo uliosambazwa Git 2.36 umetolewa. Git ni mojawapo ya mifumo maarufu zaidi, ya kuaminika na ya utendaji wa juu ya udhibiti wa toleo, ikitoa zana rahisi za maendeleo zisizo za mstari kulingana na matawi na kuunganisha. Ili kuhakikisha uadilifu wa historia na upinzani dhidi ya mabadiliko yanayorudiwa nyuma, hashing isiyofichika ya historia nzima ya awali inatumika katika kila ahadi; inawezekana pia kuthibitisha lebo za kibinafsi na ahadi kwa saini za dijiti za wasanidi programu.

Ikilinganishwa na toleo la awali, mabadiliko 717 yalipitishwa katika toleo jipya, lililoandaliwa na ushiriki wa watengenezaji 96, ambao 26 walishiriki katika maendeleo kwa mara ya kwanza. Ubunifu kuu:

  • Amri za "git log" na "git show" sasa zina chaguo la "-remerge-diff" ambalo hukuruhusu kuonyesha tofauti kati ya matokeo ya jumla ya unganisho na data halisi iliyoonyeshwa kwenye ahadi baada ya kuchakata amri ya "unganisha" , ambayo hukuruhusu kutathmini kwa uwazi mabadiliko yaliyofanywa kama matokeo ya kutatua migogoro ya ujumuishaji. Amri ya kawaida ya "git show" inaelekeza masuluhisho tofauti ya migogoro, na kufanya mabadiliko kuwa magumu kuelewa. Kwa mfano, katika picha ya skrini iliyo chini ya mstari "+/-" bila kujongeza inaonyesha azimio la mwisho la mzozo unaohusishwa na kubadilisha jina la sha1 hadi oid kwenye maoni katika tawi la kwanza, na "+/-" yenye ujongezaji inaonyesha ya awali. utatuzi wa mzozo unaosababishwa na kuonekana kwa hoja ya ziada katika tawi la pili katika chaguo la kukokotoa la dwim_ref().
    Toleo la udhibiti wa chanzo cha Git 2.36

    Unapotumia chaguo la "--remerge-diff", tofauti kati ya masuluhisho ya migogoro hazitenganishwi kwa kila tawi kuu, lakini tofauti za jumla kati ya faili ambayo ina mizozo ya kuunganisha na faili ambayo mizozo imesuluhishwa huonyeshwa.

    Toleo la udhibiti wa chanzo cha Git 2.36

  • Kuongezeka kwa unyumbufu katika kusanidi tabia ya kusafisha akiba za diski kupitia simu kwa fsync() chaguo la kukokotoa. Kigezo kilichopatikana awali cha core.fsyncObjectFiles kimegawanywa katika vigeu viwili vya usanidi core.fsync na core.fsyncMethod, ikitoa uwezo wa kutumia fsync sio tu kwa faili za vipengee (.git/objects), lakini pia kwa miundo mingine ya git kama vile viungo ( .git /refs), rejelea na upakie faili.

    Kwa kutumia utofauti wa core.fsync, unaweza kubainisha orodha ya miundo ya ndani ya Git ambayo fsync itaitwa pia baada ya utendakazi wa kuandika. Tofauti ya core.fsyncMethod hukuruhusu kuchagua mbinu ya kusafisha akiba, kwa mfano, unaweza kuchagua fsync kutumia simu ya mfumo ya jina moja, au kubainisha maandishi-pekee ili kutumia uandishi wa kache ya ukurasa.

  • Ili kulinda dhidi ya udhaifu ambao hubadilisha watumiaji wengine kubadilisha saraka za .git katika sehemu zinazoshirikiwa, uthibitishaji wa mmiliki wa hazina umeimarishwa. Utekelezaji wa amri zozote za git sasa unaruhusiwa tu katika saraka zao za ".git". Ikiwa saraka iliyo na hazina ni ya mtumiaji mwingine, basi hitilafu itaonyeshwa kwa chaguo-msingi. Tabia hii inaweza kulemazwa kwa kutumia mpangilio wa safe.directory.
  • Amri ya "git cat-file", iliyokusudiwa kutoa yaliyomo chanzo cha vitu vya Git, imeongezwa kwa chaguo la "--batch-command", ambalo linakamilisha iliyokuwapo hapo awali "--batch" na "--batch-check. ” amri zenye uwezo wa kuchagua ipasavyo aina ya towe kwa kutumia β€œ contents <object>" kuonyesha maudhui au "info <object>" ili kuonyesha maelezo kuhusu kitu. Zaidi ya hayo, amri ya "flush" inaungwa mkono ili kufuta bafa ya pato.
  • Kwa amri ya "git ls-tree", iliyokusudiwa kutengeneza orodha ya yaliyomo kwenye mti wa kitu, chaguo la "-oid-only" ("-object-only") limeongezwa, sawa na "-name-only". ”, ikionyesha vitambulishi vya vitu pekee ili kurahisisha simu kutoka kwa hati. Pia kutekelezwa ni chaguo "--format", ambayo inakuwezesha kufafanua umbizo lako la towe kwa kuchanganya taarifa kuhusu modi, aina, jina na ukubwa.
  • Amri ya "git bisect run" hutekelezea ugunduzi wa kutoweka bendera ya faili inayoweza kutekelezwa kwa hati na katika kesi hii kuonyesha makosa na misimbo 126 au 127 (hapo awali, ikiwa hati haikuweza kutekelezwa, masahihisho yote yaliwekwa alama kuwa yana matatizo) .
  • Imeongeza --refetch chaguo kwa amri ya "git fetch" ili kuleta vitu vyote bila kumfahamisha mhusika mwingine kuhusu yaliyomo tayari kwenye mfumo wa ndani. Tabia hii inaweza kuwa muhimu katika kurejesha matokeo kutokana na kushindwa wakati uadilifu wa data ya ndani hauna uhakika.
  • Amri za "git update-index", "git checkout-index", "git read-tree" na "git clean" sasa zinatumia faharasa sehemu (sparse index) ili kuboresha utendakazi na kuhifadhi nafasi katika hazina ambapo utendakazi wa sehemu unafanywa. cloning (malipo machache).
  • Tabia ya amri ya "git clone -filter=... -recurse-submodules" imebadilishwa, ambayo sasa inasababisha uundaji wa sehemu ndogo za moduli (hapo awali, wakati wa kutekeleza amri kama hizo, kichungi kilitumika kwa yaliyomo kuu tu, na moduli ndogo zilitumika. imefungwa kabisa bila kuzingatia kichungi).
  • Amri ya "git bundle" imeongeza usaidizi wa kubainisha vichujio kwa ajili ya kuweka maudhui kwa kuchagua, sawa na shughuli za uundaji wa sehemu.
  • Imeongeza chaguo la "--recurse-submodules" kwa amri ya "git branch" ili kupitisha moduli ndogo kwa kujirudia.
  • Userdiff inatoa kidhibiti kipya cha lugha ya Kotlin.

Chanzo: opennet.ru

Kuongeza maoni