Toleo la udhibiti wa chanzo cha Git 2.37

Kutolewa kwa mfumo wa kudhibiti chanzo uliosambazwa Git 2.37 imetangazwa. Git ni mojawapo ya mifumo maarufu zaidi, inayotegemewa na yenye utendakazi wa hali ya juu ya udhibiti wa toleo, ikitoa zana rahisi za ukuzaji 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 mtu binafsi na ahadi kwa saini za dijiti za wasanidi programu.

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

  • Utaratibu wa faharisi za sehemu (index ya sparse), inayofunika sehemu tu ya hazina, imeletwa tayari kwa matumizi yaliyoenea. Faharasa kiasi zinaweza kuboresha utendakazi na kuhifadhi nafasi katika hazina zinazotekeleza utendakazi wa uundaji wa sehemu (sparse-checkout) au kufanya kazi na nakala isiyokamilika ya hazina. Toleo jipya linakamilisha ujumuishaji wa faharasa sehemu kwenye onyesho la git, git sparse-checkout, na amri za git stash. Faida ya utendaji inayoonekana zaidi kutokana na kutumia faharisi za sehemu inaonekana na git stash amri, ambayo imeona ongezeko la 80% la kasi ya utekelezaji katika hali zingine.
  • Utaratibu mpya wa "pakiti za cruft" umetekelezwa kwa ajili ya kufunga vitu visivyoweza kufikiwa ambavyo havijarejelewa kwenye hazina (havijarejelewa na matawi au lebo). Vitu visivyoweza kufikiwa vinafutwa na mtoza takataka, lakini kubaki kwenye ghala kwa muda fulani kabla ya kufutwa ili kuepusha hali ya mbio. Kufuatilia kipindi cha tukio la vitu visivyoweza kufikiwa, ni muhimu kuunganisha vitambulisho kwao na wakati wa mabadiliko ya vitu sawa, ambayo hairuhusu kuzihifadhi kwenye faili moja ya pakiti ambayo vitu vyote vina wakati wa mabadiliko ya kawaida. Hapo awali, kuhifadhi kila kitu katika faili tofauti kulisababisha matatizo wakati kulikuwa na idadi kubwa ya vitu vipya, visivyoweza kufikiwa ambavyo bado havijastahiki kufutwa. Utaratibu unaopendekezwa wa "cruft packs" hukuruhusu kuhifadhi vitu vyote visivyoweza kufikiwa kwenye faili moja ya pakiti, na kutafakari data juu ya muda wa kurekebisha kila kitu kwenye jedwali tofauti lililohifadhiwa kwenye faili yenye kiendelezi cha ".mtimes".
  • Kwa Windows na macOS, kuna utaratibu uliojengwa wa kufuatilia mabadiliko kwenye mfumo wa faili, hukuruhusu kuzuia kurudia saraka nzima ya kufanya kazi wakati wa kufanya shughuli kama vile "hali ya git". Hapo awali, ili kufuatilia mabadiliko, huduma za nje za kufuatilia mabadiliko katika FS, kama vile Watchman, zinaweza kuunganishwa kupitia ndoano, lakini hii ilihitaji usakinishaji wa programu za ziada na usanidi. Sasa utendakazi uliobainishwa umejengewa ndani na unaweza kuwezeshwa kwa amri ya "git config core.fsmonitor true".
  • Katika amri ya "git sparse-checkout", usaidizi wa njia mbadala ya modi ya "-cone", njia ya kufafanua violezo vya uundaji wa sehemu, imetangazwa kuwa ya kizamani, ambayo inaruhusu, wakati wa kuamua sehemu ya hazina ambayo inategemea. operesheni ya kuiga, kuorodhesha faili mahususi kwa kutumia sintaksia ya ".gitignore", ambayo hairuhusu matumizi ya uboreshaji wa faharasa sehemu.
  • Kuongezeka kwa unyumbufu katika kusanidi simu ya fsync() ili kubadilisha mabadiliko kwenye diski. Usaidizi wa mkakati wa ulandanishi wa "bechi" umeongezwa kwenye kigezo cha "core.fsyncMethod", ambacho huruhusu kuharakisha kazi wakati wa kuandika idadi kubwa ya faili mahususi kwa kukusanya mabadiliko katika akiba ya uandishi, ambayo huwekwa upya kwa fsync() moja. wito. Jaribio, ambalo lilisababisha faili 500 kuongezwa kwa kutumia amri ya "git add", lilikamilishwa katika sekunde 0.15 wakati hali mpya iliwashwa, huku kupiga simu fsync() kulichukua sekunde 1.88 kwa kila faili, na bila kutumia fsync - sekunde 0.06 .
  • Amri za upitishaji za tawi kama vile "git log" na "git rev-list" sasa zina chaguo "-since-as-filter=X" ambalo hukuruhusu kuchuja habari kuhusu ahadi ambazo ni kubwa kuliko "X". Tofauti na chaguo la "-since", amri mpya inatekelezwa kama kichujio ambacho hakizuii utafutaji baada ya ahadi ya kwanza zaidi ya muda maalum.
  • Katika amri ya "git remote", wakati wa kubainisha bendera "-v", habari kuhusu clones za sehemu ya hazina huonyeshwa.
  • Mpangilio wa "transfer.credentialsInUrl" umeongezwa, ambao unaweza kuchukua thamani "onya", "kufa" na "ruhusu". Ikiwa imeainishwa kwenye parameta "remote. .url" vitambulisho vya maandishi wazi, kujaribu kutekeleza operesheni ya "kuchota" au "sukuma" kutashindwa kwa hitilafu ikiwa mpangilio wa "transfer.credentialsInUrl" utawekwa "kufa", au onyo ukiwekwa kuwa "onya".
  • Kwa chaguo-msingi, utekelezaji mpya wa hali ya maingiliano ya amri ya "git add -i", iliyoandikwa upya kutoka Perl hadi C, imewezeshwa.

Chanzo: opennet.ru

Kuongeza maoni