Lanseringen av den distribuerade kÀllkodshanteringssystemet Git 2.55 har skett. Bland de viktigaste förÀndringarna ingÄr: standardaktivering av kompilering med Rust, genomförande av fsmonitor-processen för Linux, en ny strategi för ompaketering av den inkrementella MIDX-indexet, kommandot "git history fixup" för att korrigera commit, optimering av genereringen av bitmappar för objektens tillgÀnglighet, stöd för parallell exekvering av hooks, kommandot "git format-rev". Git-koden distribueras under GPLv2+ licens.
JÀmfört med den föregÄende versionen har den nya versionen antagit 505 Àndringar, förberedda med deltagande av 100 utvecklare, varav 33 deltog i utvecklingen av Git för första gÄngen. De viktigaste nyheterna (1, 2, 3):
- Stöd för komponenter skrivna i Rust Àr som standard aktiverat. Kompilatorn rustc
har lagts till in i byggberoenden. För att bygga utan Rust kan man anvĂ€nda flaggan "NO_RUST=1" vid körning av make-verktyget eller "-Drust=disabled" nĂ€r man utför "meson configure". Möjligheten att stĂ€nga av byggandet med Rust kommer att stödjas fram till Git-grenen 3.0, dĂ€r Rust kommer att bli en obligatorisk beroende. En mellanlager implementerad i Rust uppnĂ„r portabilitet mellan konfigurationer med SHA-1 och SHA-256 hashar, samt vissa interna funktioner som kodning och avkodning av heltalsvĂ€rden av variabel lĂ€ngd. Framtida omarbetningar av fler betydande interna komponenter av Git förvĂ€ntas göras i Rust. - I det experimentella kommandot "git history", som tillhandahĂ„ller möjligheter för att skriva om Ă€ndringshistoriken, har operationen "git history fixup" lagts till för att korrigera commits. "Fixup"-operationen tillĂ„ter att Ă€ndringar som lagts till via "git add" kan omföras till en tidigare commit och automatiskt skriva om alla efterföljande commits likt vad som görs med kommandot "git commit âfixup=<commit>" och körning av "git rebase âautosquash <commit>~".
- För Linux-plattformen har en bakgrundsprocess fsmonitor implementerats, som övervakar Àndringar i filsystemet med hjÀlp av inotify-mekanismen och gör det möjligt att undvika att söka igenom hela arbetskatalogen nÀr man kör kommandon som "git status". Aktivering sker genom instÀllningen "core.fsmonitor".
- Kommandot «git repack» har fĂ„tt en ny lĂ€ge «âwrite-midx=incremental» som implementerar en ny strategi för att uppdatera metadata i den inkrementella MIDX-indexen (multi-pack index), vilket gör det möjligt att undvika att behöva ompacka hela indexet. I den inkrementella multipackindexen anvĂ€nds ett lager av flera mindre index istĂ€llet för ett stort som innehĂ„ller information om distributionen av objekt över pack-filer. Denna struktur tillĂ„ter att data om objekt i nya pack-filer kan lĂ€ggas till indexet genom att koppla nya lager till indexet utan att behöva ombygga de redan existerande lagren.
Kommandot «git repack âwrite-midx=incremental» möjliggör att lĂ€gga till ett nytt lager i den inkrementella MIDX-indexen som tĂ€cker nyligen skapade pack-filer. Tillsammans med paketlĂ€ge för repository «âgeometric» ger det nya kommandot möjlighet att slĂ„ samman nya objekt frĂ„n flera pack-filer till en större pack-fil och vid behov utföra bĂ„de paket- och sammanslagningsoperationer för flera angrĂ€nsande lager av den inkrementella MIDX-indexen. Denna strategi gör det möjligt att vid körning av «git repack» skriva om endast de översta lagren, vilket lĂ€mnar de gamla stora lagren intakta, samt förhindrar okontrollerad tillvĂ€xt av lagerkedjan genom att hĂ„lla det totala antalet lager pĂ„ en nivĂ„ som Ă€r proportionell mot logaritmen av det totala antalet objekt.
- Genereringen av tillgÀnglighetsbitmaper för objekt har optimerats avsevÀrt tack vare en ny algoritm för traversering av objekttrÀdet som utesluter onödig rekursion, cachar objekts positioner, sorterar bitmaper innan de kombineras med XOR-operationen och omarbetar koden för att skapa bitmaper för pseudosammanslagning (pseudo-merge). I det testade repositoryt gjorde optimeringarna att tiden för att generera bitmaper minskade frÄn 612 till 294 sekunder.
- Möjligheten att parallellt köra oberoende hookar i konfigurationsfiler har implementerats. Hookar som pĂ„verkar gemensamt tillstĂ„nd eller beaktar det, till exempel de som Ă€ndrar commit-meddelanden eller inspekterar index och arbetskatalog, kan inte köras parallellt. Dock kan hookar för linterkontroll och enhetstestning köras parallellt. Hookar som tillĂ„ter parallell körning stĂ€lls in via parametern "hook. ĐžĐŒĐ”Đœ_Ń ŃĐșа.parallel = true". Antalet arbetar som körs samtidigt bestĂ€ms genom instĂ€llningen hook.jobs, hook..jobs eller kommandoradsalternativet "-j".
- I kommandot "git pack-objects --path-walk" har möjligheten att ange filter, som "blob:none", "blob:limit=", "tree:0", "object:type=", "sparse:" och "combine:", implementerats. I ett genomfört test ledde borttagning av blobbar vid körning av "--path-walk" till en 16% minskning av storleken pÄ den skapade pack-filen.
- Ett kommando "git format-rev" har lagts till för att formatera revisioner och namn pÄ objekt som nÀmns i commit-listor eller dyker upp i valfri text (till exempel kan det anvÀndas i hookar för att bearbeta commit-meddelanden).
git last-modified | git format-rev --stdin-mode=text --format=%an
Junio C Hamano builtin/commit.c
- Som standard har de flesta kontrollsekvenser för terminalen aktiverats i informationsmeddelanden och feltexter som skickas servern. Vid kontakt med skadlig servern skulle sÄdana escape-sekvenser kunna anvÀndas för att dölja eller Àndra utdata, till exempel genom escape-sekvenser för att flytta markören och rensa texten. Stöd för escape-sekvenser för fÀrgmarkering av element har lÀmnats.
- Kommandot "git checkout -m" sparar nu automatiskt konflikterande lokala Àndringar i stash-omrÄdet utan att det Àr nödvÀndigt att omedelbart lösa konflikten.
- I kommandot "git push" har möjligheten lagts till att placera en gren pÄ flera externa Git-servrar med ett enda kommando. Till exempel, för att överföra grenen main inte bara till huvudservern utan ocksÄ till speglingar kan en grupp "publish" skapas av servrar "github", "gitlab" och "mirror":
git config remotes.publish "github gitlab mirror"
git push publish main - Till kommandot "git log --graph" har alternativet "--graph-lane-limit=" lagts till för att begrÀnsa antalet vertikala linjer vid visualisering av grenar, vilket möjliggör utrymme pÄ skÀrmen för information om commits i repository med mÄnga grenar.
âŠ
* | | | | 619931f561 Sammanfoga gren âdl/posix-unused-warning-clangâ
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: förenkla GIT_GNUC_PREREQ() jÀmförelse
| * | | | ~ ffd45926dc compat/posix.h: rensa upp GIT_GNUC_PREREQ() och UNUSED
|\ \ \ \ \~
| * | | | ~ 3f5203eeb4 ls-files: filtrera pathspec innan lstat - Till kommandona "git log" och "git rev-list" har alternativet "--max-count-oldest=" lagts till, vilket gör det möjligt att vÀlja de N Àldsta commits inom intervallet.
KĂ€lla: opennet.ru
