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 tidigare versionen har den nya versionen introducerat 504 förÀndringar, förberedda med deltagande av 64 utvecklare, dÀribland 12 som deltog i utvecklingen för första gÄngen. :
- ĂvergĂ„ngen har gjorts som standard till av Git-kommunikationsprotokollet, vilket anvĂ€nds vid fjĂ€rranslutning av klienten till Git-servern. Den andra versionen av protokollet Ă€r anmĂ€rkningsvĂ€rd för att erbjuda möjlighet till filtrering av grenar och taggar pĂ„ serversidan med en förkortad lista av referenser som skickas till klienten. Tidigare vid utförande av vilken kommandon som helst skickades alltid hela listan av referenser i hela lagret till klienten, Ă€ven nĂ€r klienten endast uppdaterade en gren eller kontrollerade aktuell lĂ€ge av sin kopia av lagret. En annan pĂ„fallande nyhet Ă€r möjligheten att lĂ€gga till nya funktioner i protokollet i takt med den nya funktionaliteten i verktygssetet. Klientens kod förblir kompatibel med det gamla protokollet och kan fortsĂ€tta att fungera bĂ„de med nya och gamla servrar, genom att automatiskt Ă„tergĂ„ till den första versionen om servern inte stöder den andra.
- Till kommandot "git config" har en ny parameter "âshow-scope" lagts till för att förenkla identifieringen av var vissa instĂ€llningar definieras. Git lĂ„ter dig definiera instĂ€llningar pĂ„ olika platser: i lagret (.git/info/config), i anvĂ€ndarkatalogen (~/.gitconfig), i den globala konfigurationsfilen (/etc/gitconfig), samt via kommandoradsalternativ och miljövariabler. Det kan vara ganska svĂ„rt att lista ut exakt var en specifik instĂ€llning definieras nĂ€r du kör "git config". För att lösa detta problem fanns det tidigare alternativet "âshow-origin", men det visar bara sökvĂ€gen till filen dĂ€r instĂ€llningen definierades, vilket Ă€r anvĂ€ndbart om du vill redigera filen, men inte hjĂ€lper om du behöver Ă€ndra vĂ€rdet via "git config" med hjĂ€lp av alternativen "âsystem", "âglobal" eller "âlocal". Den nya parametern "âshow-scope" visar kontexten för definitionerna av variablerna och kan anvĂ€ndas tillsammans med "âshow-origin":
$ git âlist âshow-scope âshow-origin
global file:/home/user/.gitconfig diff.interhunkcontext=1
global file:/home/user/.gitconfig push.default=current
[âŠ]
local file:.git/config branch.master.remote=origin
local file:.git/config branch.master.merge=refs/heads/master$ git config âshow-scope âget-regexp âdiff.*â
global diff.statgraphwidth 35
local diff.colormoved plain$ git config âglobal âunset diff.statgraphwidth
- I bindningsinstÀllningarna AnvÀndning av masker i URL:er Àr tillÄten. Eventuella HTTP-instÀllningar och autentiseringsuppgifter i Git kan stÀllas in bÄde för alla anslutningar (http.extraHeader, credential.helper) och för anslutningar kopplade till URL (credential.https://example.com.helper, credential.https://example.com.helper). Tidigare har anvÀndning av masker som *.example.com endast varit tillÄten för HTTP-instÀllningar, men inte för anslutning av autentiseringsuppgifter. I Git 2.26 har dessa skillnader ÄtgÀrdats och till exempel kan man nu ange en anvÀndarnamnbindning till alla underdomÀner:
[credential «https://*.example.com»]
username = ttaylorr
- Stödet för partiella kloningar (partial clones) har fortsatt att utvidgas, vilket möjliggör överföring av endast en del av data och arbete med en ofullstÀndig kopia av förrÄdet. I den nya versionen har ett nytt kommando "git sparse-checkout add" lagts till, vilket gör det möjligt att lÀgga till enskilda kataloger för att tillÀmpa "checkout"-operationen endast pÄ en del av arbetskatalogen, istÀllet för att lista alla sÄdana kataloger pÄ en gÄng med kommandot "git sparse-checkout set" (man kan lÀgga till en katalog i taget, utan att behöva ange hela listan varje gÄng).
Till exempel, för att klona förrĂ„det git/git utan att överföra blobs, begrĂ€nsande kontroll endast till rotkatalogen för arbetskopian och separat mĂ€rkning för att hĂ€mta katalogerna "t" och "Documentation", kan man ange:$ git clone âfilter=blob:none âsparse git@github.com:git/git.git
$ cd git
$ git sparse-checkout init âcone$ git sparse-checkout add t
âŠ.
$ git sparse-checkout add Documentation
âŠ.
$ git sparse-checkout list
Documentation
t - Prestandan för kommandot "git grep", som anvĂ€nds för att söka bĂ„de i det aktuella innehĂ„llet i förrĂ„det och i historiska revisioner, har stĂ€rkt. För att pĂ„skynda sökningen har det varit möjligt att skanna innehĂ„llet i arbetskatalogen med hjĂ€lp av flera trĂ„dar ("git grep âthreads"), men sökningen i historiska revisioner har varit en-trĂ„dad. Nu har denna begrĂ€nsning tagits bort genom att implementera möjligheten att parallellisera lĂ€sningar frĂ„n objektlagret. Som standard stĂ€lls antalet trĂ„dar in i enlighet med antalet CPU-kĂ€rnor, vilket i de flesta fall nu inte krĂ€ver att "âthreads"-alternativet uttryckligen anges.
- Stöd för autocompletion av inmatning av subkommandon, sökvÀgar, lÀnkar och andra argument för kommandot "git worktree" har lagts till, vilket gör att man kan arbeta med flera arbetskopior av förrÄdet.
- Stöd för klara fÀrger har lagts till, för vilka ANSI escape-sekvenser finns. Till exempel kan man i fÀrginstÀllningarna för syntaxmarkering "git config --color" eller "git diff --color-moved" ange "%C(brightblue)" för klarblÄ.
- En ny version av skriptet har lagts till , som möjliggör integration med mekanismen för att snabba upp spÄrningen av filÀndringar och nya filer. Efter uppdateringen av git krÀvs en hook i förvaret.
- Optimeringar för att snabba upp operationer med partiella kloningar (partial clones) har lagts till, relaterade till anvÀndningen av bitkartor
(bitmap machinery) för att undvika fullstĂ€ndig genomsökning av alla objekt under filtrering av responsen. Kontroll av blobs (âfilter=blob:none och âfilter=blob:limit=n) vid partiell kloning görs nu
betydligt snabbare. GitHub har meddelat att de anvÀnder patchar med dessa optimeringar och experimentell support för partiell kloning. - Kommandot "git rebase" har övergÄtt till en annan backend som anvÀnder 'merge'-mekanismen som standard (tidigare anvÀndes för "rebase -i") istÀllet för 'patch+apply'. I vissa avseenden skiljer sig backends, till exempel erbjuder den nya backenden att redigera commitmeddelandet efter att konflikten har lösts (git rebase --continue), medan den gamla helt enkelt anvÀnde det gamla meddelandet. För att ÄtergÄ till det gamla beteendet kan man anvÀnda alternativet "--apply" eller stÀlla in konfigurationsvariabeln 'rebase.backend' till vÀrdet 'apply'.
- Ett exempel pÄ en autentiseringsparameterhanterare som anges via .netrc har omformats för att vara anvÀndbar direkt.
- InstÀllningen gpg.minTrustLevel har lagts till för att stÀlla in minimi nivÄ av förtroende för olika element som utför kontroll av digitala signaturer.
- Alternativet "--pathspec-from-file" har lagts till i "git rm" och "git stash".
- Arbetet med att förbÀttra testsviterna har fortsatt som förberedelse för övergÄngen till hash-algoritmen SHA-2 istÀllet för SHA-1.
KĂ€lla: opennet.ru
