Utgivningen av Git 2.55 med standardstöd för Rust.

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

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