Introduceret er udgivelsen af den distribuerede system til administration af kildekoder Git 2.38. Git er et af de mest populære, pålidelige og højtydende versionsstyringssystemer, der tilbyder fleksible redskaber til ikke-lineær udvikling baseret på forgrening og sammenlægning af grene. For at sikre integriteten af historikken og modstandsdygtighed over for "bagudgående ændringer" anvendes implicit hashing af hele den tidligere historie i hver commit, og det er også muligt at bekræfte digitale signaturer fra udviklere af individuelle tags og commits.
Sammenlignet med den tidligere udgave er der i den nye version vedtaget 699 ændringer, forberedt med deltagelse af 92 udviklere, hvoraf 24 deltager for første gang i udviklingen. De vigtigste nyheder:
- Utilities "scalar" er inkluderet i hovedpakken, udviklet af Microsoft til styring af store repositories. Værktøjet var oprindeligt skrevet i C#, men en omarbejdet version i C er inkluderet i Git. Det nye værktøj adskiller sig fra Git-kommandoen ved som standard at inkludere ekstra funktioner og indstillinger, der påvirker ydeevnen ved arbejde med meget store repositories. For eksempel, når der anvendes scalar, anvendes:
- Delvis kloning for at arbejde med en ufuldstændig kopi af repository.
- En indbygget mekanisme til overvågning af ændringer i filsystemet (FSMonitor), der gør det muligt at undgå at gennemgå hele arbejdsbiblioteket.
- Indekser, der dækker objekter i forskellige pack-filer (multi-pack).
- Commit graph-filer med indekser til commit-grafen, der anvendes til at optimere adgangen til oplysninger om commits.
- Baggrundsperiodiske opgaver til opretholdelse af den optimale struktur af repository i baggrunden, uden at blokere den interaktive session (en gang i timen udføres opgaver til proaktivt at hente friske objekter fra det fjerne repository og opdatere commit-graffilen, mens der hver nat startes en proces til pakning af repository).
- SparsommeligCheckoutCone-tilstand, der begrænser tilladte skabeloner ved delvis kloning.
- Kommandoen 'git rebase' har fået tilføjet muligheden '--update-refs' til opdatering af afhængige grene, der krydser de flyttede grene, så man ikke manuelt behøver at udføre checkout-operationer til hver afhængig gren for at skifte til den ønskede commit.
- Kommanden „git rm“ er blevet kompatibel med delvise indekser.
- Adfærden for kommandoen „git mv A B“ er forbedret, når en fil flyttes fra arbejdsområdet med delvise indekser i „cone“-tilstand til et eksternt område, hvor denne tilstand ikke gælder.
- Bitmap-filformatet er blevet optimeret til brug med store repositoryer — en valgfri indeks-tabel er blevet tilføjet med en liste over valgte commits og deres offsets.
- I kommandoen „git merge-tree“ er en ny tilstand implementeret, hvor der på baggrund af to angivne commits beregnes et træ med resultatet af sammensmeltningen, som om historien for disse commits var blevet kombineret.
- Indstillingen „safe.barerepository“ er tilføjet for at styre muligheden for at placere bare repositories (repositories uden arbejdsmappe) inden i andre git repositories. Ved at indstille denne til „explicit“ tillades arbejde med bare repositories, der kun er placeret i roden af mappen. For at muliggøre placering af bare repositories i underkataloger skal værdien „all“ bruges.
- I kommandoen „git grep“ er der tilføjet en valgmulighed „-m“ („—max-count“), svarende til den samme mulighed i GNU grep, som gør det muligt at begrænse antallet af viste match.
- I kommandoen „ls-files“ er der implementeret en valgmulighed „—format“ til at tilpasse de viste felter (for eksempel kan output af objektnavne, tilstande osv. inkluderes).
- I „git cat-file“ er der implementeret mulighed for at tage hensyn til forfatterens tilknytninger til e-mail, som angivet i mailmap-filen, når indholdet af objekter vises.
Kilde: opennet.ru
