utgivning av det distribuerade systemet för hantering av kÀllkod . Git Àr ett av de mest populÀra, pÄlitliga och högpresterande versionshanteringssystemen som erbjuder flexibla medel för icke-linjÀr utveckling, baserat pÄ grenning och sammanslagning. För att sÀkerstÀlla integriteten i historiken och motstÄndskraften mot bakÄtriktade Àndringar anvÀnds implicita hashning av hela den tidigare historien i varje commit, och det Àr ocksÄ möjligt att bekrÀfta med digitala signaturer av utvecklare för individuella taggar och commits.
JÀmfört med den senaste utgÄvan har den nya versionen tagit emot 544 Àndringar, som förberetts av 78 utvecklare, varav 21 deltog i utvecklingen för första gÄngen. :
- Stöd för konfigurationsmakron har lagts till, vilket gör det möjligt att snabbt vÀxla mellan olika uppsÀttningar instÀllningar utan att behöva gÄ in i detaljerna kring de specifika alternativen. Med makron behöver man inte komma ihÄg vilka instÀllningar som mÄste Àndras för att aktivera en viss funktion. Till exempel, i hÀndelse av att man fÄr prestandaproblem med ett stort förrÄd, kan det vara nödvÀndigt att byta till den nya indexeringsmetoden, aktivera komprimering av sökvÀgsprefix och anvÀnda cache för oövervakade filer genom att sÀtta parameter index.version till vÀrde 4 och aktivera core.untrackedCache. Makron gör att man kan spara tid pÄ att hitta rÀtt lösning i dokumentationen och direkt aktivera instÀllningar med optimeringar för förrÄd med mÄnga filer:
git config feature.manyFiles true
- Lagring av objekt i form av commit-grafer (commit-graph) Ă€r nu aktiverat som standard, dĂ€r en grafstruktur anvĂ€nds för indexering istĂ€llet för en linjĂ€r lista av objekt- och hashreferenser. Tidigare krĂ€vdes det att ladda ner varje objekt frĂ„n disken för att hitta lĂ€nkar för att bestĂ€mma versioner med en viss korrigering, men med lagring i grafform kan alla nödvĂ€ndiga relationer bestĂ€mmas omedelbart. ĂvergĂ„ngen till lagring i form av commit-grafer i Linux och Git-repositorier har möjliggjort nĂ€stan en tvĂ„faldig ökning av prestanda för operationer med grenar. För att aktivera den nya lagringsmetoden efter att ha uppdaterat till Git 2.24 bör kommandot 'git gc' köras.
Bland Àndringarna relaterade till commit-graph noteras ocksÄ att indikatorn för operationens framsteg nu Àr enhetlig med andra kommandon i relaterade commit-graph-kommandon ("git commit-graph write", "git commit-graph verify" etc.). Framstegsinformationen visas numera som standard endast för terminalen (för att Àndra beteende ska alternativet "-[no-]progress" anvÀndas). Dessutom har en ny konfigurationsparameter fetch.writeCommitGraph lagts till, vilket möjliggör automatisk uppdatering av commit-graph-filen vid "git fetch"-operationer (alla commits som hÀmtas frÄn externa repository kommer omedelbart att gÄ till commit-graph utan behov av att köra auto-gc separat);
- Ett kommando har lagts till för att skriva om Ă€ndringshistoriken â "", vilket Ă€r ett enklare alternativ till kommandot "" för att utföra operationer med Ă€ndringshistoriken i repositoryt (till exempel ta bort en fil frĂ„n repositoryt eller extrahera Ă€ndringshistoriken för en viss mapp). För att öka effektiviteten utförs operationerna i "git filter-repo" pĂ„ en kontinuerlig ström av historik istĂ€llet för ordnad granskning av commits.
Filtrering av historik görs med hjÀlp av alternativet "-path-{glob,regex}", vilket möjliggör anvÀndning av bÄde enkla mönster och reguljÀra uttryck. Det finns ocksÄ alternativ för att utföra operationer för "sök och ersÀtt" eller för att rensa binÀra objekt vars storlek överskrider en angiven grÀns. Varje omskriven commit fÄr en ny SHA-1 hash-ID och alla referenser till den ersatta commit uppdateras i enlighet med det nya identifieringsnumret.
För att fÄ en sammanfattning med statistik om repositoryt (antal objekt per typ, de största filerna och mapparna, vilka filÀndelser som krÀver mest diskutrymme osv.) finns alternativet "-analyze". För att utöka funktionaliteten finns det möjlighet att ansluta godtyckliga callback-handlÀggare skriven i Python, genom vilka man bÄde kan skapa nya underkommandon och bearbeta olika hÀndelser (till exempel nya filtyper);
- Alternativet ââend-of-optionsâ har lagts till, vilket möjliggör separering av alternativ frĂ„n lĂ€nknamn som kan börja med tecknet â-â och uppfattas som alternativ (âgit log âend-of-options âsuper-dangerous-optionâ). Om sĂ„dana namn i praktiken kan undvikas som âgit log ârefs/heads/âsuper-dangerous-option'â, kan det ha uppstĂ„tt problem med att faststĂ€lla namnrymden i skript. Den vanliga avgrĂ€nsaren âââ Ă€r i det hĂ€r fallet inte tillĂ€mplig, eftersom den redan anvĂ€nds för att separera lĂ€nknamn frĂ„n filer (t.ex. âgit log âend-of-options âsuper-dangerous-option ^master â path/to/fileâ);
- I âgit rebase ârebase-mergesâ har alternativet ââstrategyâ och ââstrategy-optionâ lagts till för att vĂ€lja ;
- En ny hanterare â.git/hooks/pre-merge-commitâ har lagts till, som anropas efter att sammanslagningen har utförts, men före inspelning av den resulterande committen;
- Kommandots autocompletion-motor har lagts till stöd för att komplettera konfigurationsvariabler kopplade till specifika kommandos instÀllningar.
Till exempel, om du behöver skriva âgit -c core.autocrlf=false add path/to/my/fileâ, men inte kommer ihĂ„g det exakta namnet pĂ„ variabeln âcore.autocrlfâ, kan du trycka pĂ„ Tab för att fĂ„ en hint.
Dessutom har Git-utvecklarna upptrĂ€dandekoden för projektets deltagare, som definierar de grundlĂ€ggande principerna för att lösa konfliktsituationer. Dokumentet baseras pĂ„ rekommendationerna för ââ, som tillĂ€mpas i mĂ„nga öppna projekt, inklusive Linux-kĂ€rnan, Eclipse, Freedesktop, GitLab, Ruby och Kubernetes. Dokumentet faststĂ€ller lika möjligheter för alla deltagare, oavsett deras livsĂ„skĂ„dning, Ă„lder, kön, religiös övertygelse, utbildningsnivĂ„, social status och nationalitet. I samhĂ€llet uppmuntras vĂ€nlig kommunikation, förstĂ„else, medkĂ€nsla för andras problem, mottagande av konstruktiv kritik, och antagande av de bĂ€sta lösningarna för hela samhĂ€llet. Trakasserier, krĂ€nkande kommunikation, försök till nedvĂ€rdering, trakasseri, intrĂ„ng i privatlivet, avslöjande av personuppgifter samt andra Ă„tgĂ€rder som kan anses olĂ€mpliga vid professionell kommunikation Ă€r inte tillĂ„tna.
KĂ€lla: opennet.ru
