Efter tre månaders utveckling har den distribuerade versionshanteringssystemet Git 2.44 publicerats. Git är ett av de mest populära, pålitliga och högpresterande versionshanteringssystemen som erbjuder flexibla verktyg för icke-linjär utveckling, baserat på gren- och sammanslagningsmetoder. För att säkerställa historia och motståndskraft mot bakåtriktade ändringar används implicit hashning av hela tidigare historia i varje commit, samt möjligheten till verifiering av digitala signaturer från utvecklare av specifika taggar och commits. Git-koden distribueras under GPLv2+-licensen.
Jämfört med den föregående versionen har 503 ändringar antagits i den nya versionen, förberedda med deltagande av 85 utvecklare, varav 34 deltog för första gången i utvecklingen. Huvudsakliga nyheter:
- Ett nytt kommando "git replay" har lagts till, som kan användas som ett alternativ till "git rebase" och användas för att återskapa historik på servern utan arbetskatalog (bare-repo, som inte innehåller en arbetskatalog), bearbeta flera grenar samtidigt, utföra rebase-operationer på grenar som är olika från de som har hämtats för tillfället, eller helt enkelt för att påskynda sammanslagnings operationer.
- Stöd för kontinuerlig integrationssystemet GitLab CI har lagts till.
- I kommandona "git add" och "git stash" har stöd för vägar med attribut ":(attr:…)" lagts till, som anges analogt med kommandot "git show". Till exempel kan "git add ':(attr:~binary)'" användas för att lägga till alla textfiler (inte binära) i index. Dessutom har ett attribut "builtin_objectmode" föreslagits för filtrering av filvägar baserat på åtkomsträttigheter. Till exempel kan "git add ':(attr:builtin_objectmode=100755)'" användas för att lägga till alla exekverbara filer.
- Stöd för återanvändning av objekt som sprids över flera pack-filer har lagts till, för vilka det finns en sammanfattande index (multi-pack-index) med data om tillgången till objekt (en optimering som gör att man i stället för att överföra data faktiskt kan hänvisa till användningen av data som redan finns i pack-filerna). Från och med version 2.44 kan git nu hantera återanvändning av objekt över flera pack-filer, utan att behöva packa om arkivet till en enda pack-fil. För att aktivera den nya funktionen måste följande kommandon köras: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap
Efter detta kan antalet pack-filer, från vilka objekt återanvänds, spåras i värdet "pack-reused … (from N)", som visas vid utförande av "git push".
- Kommandot "git rebase —autosquash" kan nu användas för rebase-operationer i icke-interaktivt läge, vilket gör det möjligt att utföra rebase och snabbt tillämpa fixup-korrigeringar utan att inspektera ändringslistan och utan att ändra miljövariabeln GIT_SEQUENCE_EDITOR.
- Kommandot "git merge-file" har fått alternativet "—diff-algorithm" för att välja en alternativ algoritm för att utvärdera skillnader mellan filer.
- I kommandot "git checkout -B []" är det förbjudet att uppdatera och extrahera grenar som använder ett annat arbetsområde. För att återfå det gamla beteendet har alternativet "—ignore-other-worktrees" lagts till.
- Möjligheten att ställa in "git config advice.pushAlreadyExists" till värdet "true" har lagts till, vilket tar bort instruktionen om hur man inaktiverar meddelandena (hint) vid utskrift, som tar upp utrymme på skärmen.
- Utförandet av kommandot "git for-each-ref" med alternativet "—no-sort" har optimerats, vilket nu ger utdata i ospecificerad ordning (tidigare tillämpades fortfarande alfabetisk sortering vid användning av "—no-sort"). Efter optimiseringarna accelererar användning av "—no-sort" nu "git for-each-ref" med cirka 20% i arkiv med ett stort antal referenser.
- I backendhanteringen av inloggningsuppgifter för wincred har stöd för uppdatering av OAuth-token lagts till, på liknande sätt som det har implementerats i backends credential-cache och credential-libsecret.
- I "git fetch" har stöd för konfigurationsparameter "fetch.all" lagts till, vilket kommer att hanteras på liknande sätt som tillägg av alternativet "—all" i kommandoraden.
Källa: opennet.ru
