Publicerad utgÄva av det distribuerade versionshanteringssystemet Git 2.48. Git kÀnnetecknas av hög prestanda och erbjuder verktyg för icke-linjÀr utveckling baserad pÄ grenhantering och sammanslagningar. För att sÀkerstÀlla integriteten i historiken och motstÄndskraft mot 'bakÄtstrÀvande' förÀndringar anvÀnds implicit hashning av hela föregÄende historik i varje commit samt digitala signaturer frÄn utvecklarna för sÀrskilda taggar och commits. Git-koden distribueras under GPLv2+-licensen.
JÀmfört med föregÄende version har den nya versionen tagit emot 605 Àndringar, förberedda med deltagande av 93 utvecklare, varav 35 deltar i utvecklingen för första gÄngen. Huvudnyheterna Àr:
- Möjligheten att bygga med byggsystemet Meson har införts, förutom GNU Make och CMake. För att bygga Git kan man nu anvĂ€nda kommandot âmeson setup build && ninja -C buildâ. Det noteras att Makefile som anvĂ€nds med GNU Make har vuxit till 3887 rader och inte Ă€r sĂ„ enkel som man skulle önska. Verktyget Meson förenklar arbetet med byggsystemet, Ă€r bekvĂ€mt för plattformsoberoende byggen och gör byggen mer tillgĂ€ngliga för nybörjare eller utvecklare utan erfarenhet av Make-verktyget. Det finns inga planer pĂ„ att avbryta stödet för Make och CMake inom överskĂ„dlig framtid.
- Byggalternativ har lagts till, vilket möjliggör anvÀndning av alternativa implementationer av SHA-1-hash vid berÀkning av checksummer som anvÀnds för att verifiera integriteten av datablokkar i packfiler. Prestanda för berÀkning av checksummer Àr mycket viktig, till exempel spenderas cirka 78% av processorens tid pÄ deras berÀkning nÀr ett repository med Linux-kÀrnan klonas. Den standardanvÀnda implementationen inkluderar ytterligare kollisionskontroller och skydd mot attacker pÄ SHA-1, sÄsom SHAttered och Shambles. SÄdant skydd, som konsumerar extra resurser, Àr meningsfullt endast vid anvÀndning av SHA-1 för kryptografiska ÀndamÄl och Àr vÀrdelöst vid verifiering av integriteten av indexdata.
För att bygga Git med en snabbare implementation av SHA-1, som inte Ă€r lĂ€mplig för kryptosystem, föreslĂ„s en rad alternativ *_UNSAFE, till exempel âOPENSSL_SHA1_UNSAFEâ. PĂ„ GitHub har bygget med förenklad SHA-1 möjliggjort en ökning av prestandan för datahĂ€mtning och kloning med 10-13%.
- Möjligheten att anvÀnda alternativet "--remerge-diff" i kommandot "range-diff" har lagts till, vilket gör det möjligt att visa skillnader mellan det sammanlagda resultatet av sammanslagningen och de faktiska data som Äterspeglas i commit efter att kommandot "merge" har bearbetats. NÀr alternativet "--remerge-diff" anvÀnds, delas inte skillnaderna mellan konfliktlösningar för varje förÀldergren, utan visar de gemensamma skillnaderna mellan filen med sammanslagningskonflikter och filen dÀr konflikterna har lösts. I sammanhanget av kommandot "range-diff" kan det nya alternativet vara anvÀndbart för att jÀmföra uppsÀttningar av commits efter att sekvensen av commits har flyttats med kommandot "rebase" med alternativet "--rebase-merges".
- Möjligheten att köra en Git-testsvit med aktiverad minneslÀckagedetektionslÀge har lagts till. Eftersom git tillhandahÄller verktyg som avslutar arbetet efter att den anropade funktionen har körts, har minneslÀckor tidigare inte betraktats som ett stort problem. Behovet av att helt eliminera minneslÀckor blev aktuellt efter att arbetet pÄbörjades med att separera intern funktionalitet till ett bibliotek som kan anvÀndas i lÄngvariga processer.
- Listan över förÄldrade lÀgen och funktioner som planeras att tas bort i framtiden har börjat bildas. Det antas att borttagandet av förÄldrad funktionalitet kommer att ske i Git version 3.0, som kommer att innehÄlla Àndringar som bryter bakÄtkompatibiliteten.
- Optimeringen av kommandot "git for-each-ref" som skriver ut listan över referenser i ett repository har fortsatt. Optimeringen, som kombinerar hanterare för filtrering av referenser och formatering av utdata, tillÀmpas nu inte bara för osorterad utdata utan Àven nÀr alternativet "--sort" anges.
- Implementeringen av baksidan "reftable" har förbÀttrats med blocklagring för effektiv lagring i lagret av lÀnkar till grenar och taggar. Reftable möjliggör avsevÀrt snabbare sökning, lÀsning och skrivning i repository med ett mycket stort antal lÀnkar. I den nya versionen har anvÀndningen av vissa hjÀlpbibliotek för att utesluta libgit som en byggberoende upphört. Adaptiv hantering av fel som returneras av minnesallokeringsfunktionerna har implementerats (brist pÄ minne leder nu inte till en krasch). Operationerna för att skapa lÀnkar har blivit snabbare och minnesanvÀndningen har minskat.
- I implementeringen av partiell kloning har problem som ledde till oÀndliga loopar och korruption av repository efter körning av kommandot "git gc" lösts.
- NÀr kommandot "git fetch " utförs och "refs/remotes//HEAD" saknas pÄ det lokala systemet men det finns en gren pÄ den andra sidan som HEAD pekar pÄ, kommer "refs/remotes//HEAD" nu att omdirigeras till denna gren. För att hantera synkronisering av "refs/remotes//HEAD" med vÀrdet HEAD pÄ den andra sidan har instÀllningen remote..followRemoteHEAD lagts till.
- InstÀllningen "remote..serverOption" har lagts till, som liknar alternativet för kommandoraden "--serverOption=".
- I kommandot "git rebase --rebase-merges" har anvÀndning av grenarnas namn som etiketter sÀkerstÀllts i möjligaste mÄn.
- Flaggan '-e' har lagts till i kommandona 'git notes add' och 'git notes append', vilket öppnar noteringen i en extern textredigerare som anges genom miljövariabeln GIT_EDITOR.
- Kompatibiliteten med GCC 15 och standarden C23 har förbÀttrats.
- Stödet för Àldre versioner av libcURL och Perl har upphört.
KĂ€lla: opennet.ru
