Git 2.37 iturburu-kontrolaren bertsioa

Iturburu banatuaren kontrol sistemaren Git 2.37 bertsioa aurkezten da. Git bertsioak kontrolatzeko sistema ezagunenetako, fidagarri eta errendimendu handikoenetariko bat da, eta adarretako eta bateratzeetan oinarritutako garapen-tresna ez-lineal malguak eskaintzen ditu. Historiaren osotasuna eta aldaketa atzerakoiekiko erresistentzia bermatzeko, aurreko historia osoaren hashing inplizitua erabiltzen da konpromiso bakoitzean, eta garatzaileen sinadura digitalekin etiketa eta konpromiso indibidualak egiaztatzeko aukera ere badago.

Aurreko bertsioarekin alderatuta, 395 aldaketa onartu ziren bertsio berrian, 75 garatzaileren parte-hartzearekin prestatuta, horietatik 20k garapenean parte hartu zuten lehen aldiz. Berrikuntza nagusiak:

  • Indize partzialen mekanismoa (indize urrikoa), biltegiaren zati bat bakarrik hartzen duena, erabilpen zabalerako prest jarri da. Indize partzialek errendimendua hobetu eta lekua aurreztu dezakete klonazio-eragiketa partzialak egiten dituzten (sparse-checkout) edo biltegiaren kopia partzial batean funtzionatzen duten biltegietan. Bertsio berrian, indize partzialak "git show", "git sparse-checkout" eta "git stash" komandoetan integratzeko lana amaitu da. Indize partzialak erabiltzean errendimendu-irabazirik nabarmenena "git stash" komandoan dago, egoera batzuetan % 80 azkarragoa baita.
  • "Cruft packs" mekanismo berri bat ezarri da biltegian erreferentziarik ez duten objektu eskuraezinak ontziratzeko (adarrak edo etiketak ez dira erreferentziarik). Lortu ezin diren objektuak zabor-biltzaileak kentzen ditu, baina kendu aurretik denbora jakin batean biltegian geratzen dira lasterketa-baldintzak saihesteko. Objektu eskuraezinen denboraren jarraipena egiteko, beharrezkoa da etiketak antzeko objektuen aldaketa-denborarekin lotzea, eta horrek ez du onartzen pakete-fitxategi batean gordetzea, zeinetan objektu guztiek aldaketa-denbora komuna duten. Aurretik, objektu bakoitza fitxategi bereizi batean gordetzeak arazoak ekarri zituen oraindik ezabatzeko gai ez ziren objektu fresko eta eskuraezinak zeudenean. Proposatutako "cruft packs" mekanismoari esker, eskuraezin diren objektu guztiak pakete-fitxategi batean gorde ditzakezu, eta objektu bakoitzaren aldaketa-denborari buruzko datuak ".mtimes" luzapena duen fitxategi batean gordetako taula bereizi batean islatzea.
  • Windows eta macOS-entzat, fitxategi-sistemako aldaketen jarraipena egiteko mekanismo integratua dago, eta horrek ez du lan-direktorio osoa zerrendatzeko beharra "git status" bezalako eragiketak egitean. Aurretik, kakoen bidez aldaketen jarraipena egiteko, kanpoko fitxategi-sistemako aldaketen jarraipena egiteko utilitateak konekta zitezkeen, hala nola Watchman, baina horretarako programa eta konfigurazio osagarriak instalatu behar ziren. Funtzionalitate hau orain barneratuta dago eta "git config core.fsmonitor true" komandoarekin gaitu daiteke.
  • "git sparse-checkout" komandoak baztertu egin zuen klonazio partzialerako txantiloiak definitzeko "-konoa" moduaren alternatibarako laguntza, eta horrek aukera ematen du, klonazio-eragiketaren menpeko biltegiaren zatia zehazten denean, fitxategi indibidualak zerrendatzeko aukera erabiliz " .gitignore" sintaxia, optimizaziorako indize partzialak erabiltzea onartzen ez duena.
  • Malgutasuna hobetu da fsync() deia diskoan aldaketak garbitzeko konfiguratzeko. "Batch" sinkronizazio-estrategiaren euskarria gehitu da "core.fsyncMethod" parametroari, eta horrek fitxategi indibidual ugari idaztean lana bizkortzen du, fsync() dei bakar batek hustutako idazketa-cachean aldaketak pilatuz. git add komandoari 500 fitxategi gehitu zitzaizkion proba bat 0.15 segundotan burutu zen modu berria gaituta, 1.88 segundo behar izan zituen fsync() duen fitxategi bakoitzeko, eta 0.06 segundo fsync erabili gabe.
  • "git log" eta "git rev-list" bezalako zeharkako komandoek orain " --since-as-filter=X" aukera dute "X" baino zaharragoak diren konpromezuei buruzko informazioa iragazteko. "-since" aukera ez bezala, komando berria zehaztutako denbora baino zaharragoa den lehenengo konpromisoaren ondoren bilaketa geldiarazten ez duen iragazki gisa ezartzen da.
  • "git remote" komandoan, "-v" marka zehaztean, biltegiaren klon partzialei buruzko informazioa ematen da.
  • "transfer.credentialsInUrl" ezarpena gehitu da, "abisatu", "hil" eta "baimendu" balioak har ditzakeena. "Urrutiko" atalean zehazten bada. .url" kredentzialak testu garbian, "eskuratu" edo "bultza" eragiketa bat egiteko saiakerak huts egingo du "transfer.credentialsInUrl" ezarpena "hil" gisa ezartzen bada, edo abisu bat "abisatu" gisa ezarrita badago.
  • Lehenespenez, Perl-etik C-ra berridatzitako "git add -i" komandoaren modu interaktiboaren inplementazio berri bat erabiltzen da.

Iturria: opennet.ru

Gehitu iruzkin berria