Git 2.55

Presenteras utgÄvan av det distribuerade systemet för hantering av kÀlltexter Git 2.55. Bland de viktigaste förÀndringarna: standardinbÀddning av Rust-kompilering, implementering av fsmonitor-processt för Linux, en ny strategi för ompaketering av inkrementell MIDX-indexering, git history fixup-kommando för att korrigera ett commit, optimering av generering av tillgÀnglighetsbitmapar, stöd för parallell exekvering av hooks, git format-rev-kommando. Git-kod sprids under GPLv2+.

JÀmfört med föregÄende version innehÄller den nya versionen 505 Àndringar, förberedda med deltagande av 100 utvecklare, varav 33 deltog i utvecklingen av Git för första gÄngen.

Huvudnyheterna (github.blog, gitlab.com/blog, gitlab.com/git-scm):

  • Som standard Ă€r inkluderad stöd för komponenter skrivna i Rust. Kompilatorn rustc tillagd bland byggberoenden. För att bygga utan Rust kan flaggan NO_RUST=1 anvĂ€ndas vid körning av make-verktyget eller -Drust=disabled vid utförande av meson configure. Möjligheten att stĂ€nga av byggandet med Rust kommer att stödjas fram till Git 3.0, dĂ€r Rust kommer att pĂ„slagen bland obligatoriska beroenden. En Rust-baserad adapter har implementerats för portabilitet mellan konfigurationer med SHA-1 och SHA-256-hashar, samt vissa interna funktioner som kodning och avkodning av variabla heltalsvĂ€rden. I framtiden förvĂ€ntas en omfattande omarbetning av viktigare interna komponenter av Git till Rust.
  • I det experimentella kommandot "git history", som tillhandahĂ„ller funktioner för att skriva om Ă€ndringshistorik, har operationen "git history fixup" lagts till för att korrigera ett commit. Fixup-operationen tillĂ„ter flyttning av Ă€ndringar, som lagts till med git add, till ett tidigare commit och automatiskt skriva om alla efterföljande commits i likhet med att utföra kommandot git commit —fixup=<commit> och köra git rebase —autosquash <commit>~.
  • För Linux-plattformen har en bakgrundsprocess fsmonitor, implementerats för att spĂ„ra Ă€ndringar i filsystemet med hjĂ€lp av mekanismen inotify och möjliggör att undvika genomgĂ„ng av hela arbetskatalogen vid körning av kommandon som git status. Aktivering sker genom instĂ€llningen "core.fsmonitor».
  • I kommandot git repack har en ny lĂ€ge —write-midx=incremental lagts till, som implementerar en ny strategi för att uppdatera metadata i det inkrementella MIDX-indexet (multi-pack index), vilket gör det möjligt att slippa ompaketering av hela indexet. I det inkrementella multipack-indexet anvĂ€nds lager istĂ€llet för ett stort index som innehĂ„ller information om distribution av objekt i pack-filer; varje lager omfattar ett visst antal pack-filer och lagras i en separat bitmap-fil. Denna struktur gör det möjligt att lĂ€gga till data om objekt i nya pack-filer i indexet genom att fĂ€sta nya lager till indexet utan att behöva bygga om befintliga lager. Kommandot git repack —write-midx=incremental gör det möjligt att lĂ€gga till ett nytt lager i det inkrementella MIDX-indexet som omfattar nyligen skapade pack-filer. I kombination med lĂ€get för att paketera repository —geometric ger den nya kommandot möjlighet att sammanföra nya objekt frĂ„n flera pack-filer till en större pack-fil och vid behov utföra paketering och sammanslagning av flera angrĂ€nsande lager i det inkrementella MIDX-indexet. Denna strategi möjliggör att endast de övre lagren skrivs om vid utförande av git repack, medan de gamla stora lagren förblir intakta, samt förhindrar okontrollerad tillvĂ€xt av lagerkedjan, vilket hĂ„ller det totala antalet lager pĂ„ en nivĂ„ som Ă€r proportionell mot logaritmen av det totala antalet objekt.
  • Genereringen av bitmapps tillgĂ€nglighet för objekt har betydligt optimerats tack vare en ny algoritm för att traversera objekttrĂ€det, som utesluter onödig rekursion, cachelagrar objekts positioner, sorterar bitmapps innan de sammanfogas med operasjonen XOR och omarbetar koden för att skapa bitmapps för pseudomerger (pseudo-merge). I det testade repositoryt gjorde optimeringarna att tiden för genereringen av bitmapps minskade frĂ„n 612 till 294 sekunder.
  • Möjligheten till parallell exekvering av oberoende hooks i konfigurationsfiler. Hooks som pĂ„verkar det gemensamma tillstĂ„ndet eller beaktar det, till exempel som Ă€ndrar commit-kommentarer eller inspekterar index och arbetskataloger, kan inte köras parallellt. Men hooks för lintern och enhetstester kan köras parallellt. Hooks som tillĂ„ter parallell körning konfigureras med parametern hook.namn_huk.parallel = true. Antalet samtidiga jobb bestĂ€ms genom instĂ€llningen hook.jobs, hook..jobs eller kommandoradsalternativet -j.
  • I git pack-objects-verktyget har möjligheten att ange filter, sĂ„som blob:none, blob:limit=, tree:0, object:type=, sparse: och combine:, införts. I ett genomfört test möjliggjorde borttagning av blobs vid körning av --path-walk en minskning av den skapade packfilens storlek med 16%.
  • Kommandot git format-rev har lagts till för att formatera revisioner och objektnamn som nĂ€mns i commitlistor eller förekommer i godtycklig text (till exempel för anvĂ€ndning i hooks för att bearbeta commit-kommentarer).

git last-modified | git format-rev --stdin-mode=text --format=%an

Junio C Hamano builtin/commit.c

  • Som standard ingĂ„r nu escapande av de flesta terminalkontrollsekvenser i informationsmeddelanden och feltext som överförs av servern. Vid kontakt med en skadlig server kunde sĂ„dana escape-sekvenser anvĂ€ndas för att dölja eller modifiera utdata, till exempel genom escape-sekvenser för att flytta markören och rensa text. Stöd för escape-sekvenser för att fĂ€rgmarkera element har lĂ€mnats kvar.
  • Kommandot git checkout -m sparar nu automatiskt konfliktande lokala Ă€ndringar i stash-omrĂ„det utan att det behövs en omedelbar lösning av konflikten.
  • Möjligheten att skicka en gren till flera externa Git-servrar med ett enda kommando har lagts till git push. Till exempel, för att överföra grenen main till bĂ„de huvudservern och speglar kan du skapa en publik grupp av servrar github, gitlab och mirror:

git config remotes.publish "github gitlab mirror"
git push publish main

  • I kommandot git log --graph har alternativet --graph-lane-limit= lagts till för att begrĂ€nsa antalet vertikala band vid visualisering av grenar, vilket gör att det finns utrymme pĂ„ skĂ€rmen för commit-data i repon med ett stort antal 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

  • I kommandona git log och git rev-list har alternativet --max-count-oldest= lagts till, vilket gör det möjligt att vĂ€lja N av de Ă€ldsta committerna i intervallet.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster