
Git 2.52 сега на разположение като стабилна актуализация на тази популярна разпределена система за контрол на версиите. Версията се предлага с Нови функции, корекции по поддръжката и подобрения в производителността Резултатът от работата на повече от 94 сътрудници, 33 от които за първи път в проекта.
Сред най-забележителните промени са новите подкоманди за проучване на хранилища, по-интелигентният работен процес за поддръжка и напредъкът към прехода към SHA-256. Всичко това се предоставя с последователен и семпъл подход, с... практически подход които управляват хранилища с различни размери.
Нови команди в git 2.52 за проучване на хранилища
Най-поразителната новост е git last-modifiedПроектиран за ефективно получаване на най-скорошния commit, който е докоснал всеки път. В хранилища с много записи, този подход избягва повтарящи се обхождания на историята и може да бъде няколко пъти по-бързо от верижно свързване на ls-tree + logСпоред вътрешни тестове, намаляване на времената от секунди на милисекунди в реални сценарии.
Двигател last-modified Разработван е в продължение на години в GitHub под името дърво на обвинениятаподхранвайки „обвиненията“ си на ниво дървета от 2012 г. Впоследствие, Инженери на GitLab Те усъвършенстваха пакета пачове, за да го интегрират в Git 2.52, въпреки че все още има функции, които трябва да бъдат добавени, като например форматиране на диска за кеширане на резултатите от предишни екзекуции.
Експерименталният също пристига git repoЧадър за консултиране с функции на хранилището. С git repo info можеш ли да кажеш дали е гол o плитък, форматът на обектите и препратките, както и с git repo structure са отпечатани структурна статистика (брой на комити, дървета, блобове, клонове, тагове и др.). Освен това, info включва съкратената опция -z и е в състояние на докладвайте формата на обекта използва.
За тези, които работят на ниско ниво с препоръки, git refs Suma git refs list (псевдоним на git for-each-ref) Y git refs exists (подобен на git show-ref --existsТе не предлагат безпрецедентни възможности, но те концентрират чести операции на препратки под една команда.
Малък, но полезен: сега git cmd --help-all Работи също извън хранилищеТова улеснява достъпа до глобална помощ, без да е необходимо да се инициализира каквото и да било.
Поддръжка и производителност
Git 2.52 въвежда задача geometric в git maintenance Избягва преопакованията „всичко в едно“, когато е възможно, и по-рядко премахва недостъпните обекти. Задачата проверява пакетите, за да формира геометрична прогресия по брой обекти и уплътнете без подрязване, когато е уместно; ако операцията ще завърши с едно цяло струпване, извършете git gc завършен за укрепване и резитба.
По отношение на скоростта има измерими подобрения: git describe Сега използва опашка с приоритет и печели около a 30% добив; git remote rename оптимизира преименуването на референции; git ls-files Това поддържа индекса разпръснат в повече случаи; git log -L Това избягва определени разлики на ниво дърво при сливания, ускорявайки анализа; и библиотеката xdiff Той включва няколко оптимизации, които Разликите и сливането са подобрени на ниво файл.
Сигурност и пътна карта към Git 3.0
Преходът от SHA-1 към SHA-256 продължава. Първите елементи на SHA-256 се появяват във версия 2.52. оперативна съвместимост между алгоритмитеЦелта е да се позволи на хранилищата с различни хешове да обменят промени безпроблемно. Това все още е в начален етап, но проправя пътя за следващото голямо издание.
Друга планирана промяна за Git 3.0 е, че клонът по подразбиране ще се нарича „main“. Това е включено от версия 2.52 насам. улики и помощни съобщения За да се улесни тази промяна, всеки, който иска да напредне, може да компилира с флага WITH_BREAKING_CHANGES за тестване на планирани поведения.
Той включва също, по избор, Rust код, защитен от WITH_RUSTкойто реализира кодиране/декодиране на цели числа с променлива ширина. В тази версия това не е задължително и Git 2.52 работи без компилатора Rust, но Очаква се Git 3.0 да го изисква и разширете пренаписаните парчета.
Подобрения в работните процеси и използваемостта
Използването на филтри на Блум с променен пътВероятностен филтър, който ускорява пътуванията, когато са стеснени по маршрути. Сега те се използват дори когато спецификация на пътя Той съдържа частични заместващи символи (например foo/bar/*/baz) и в сценарии с множество маршрути от интерес, което е от полза за запитвания като тези на last-modified и няколко команди за история.
git sparse-checkout добавете действието clean За да разрешите случаи, при които при промяна на дефиницията на областите на интерес, файловете остават извън селекцията. С една стъпка можете почистете работещото дърво на нежелани елементи.
Други полезни допълнения: нова променлива commitGraph.changedPaths да се активира по подразбиране --changed-paths en git commit-graphопция stash.index така че git stash pop/apply държи се така, сякаш е извикан с --index; git diff-tree recibe --max-depth; git fast-import Ahora управлява подписани етикети; и git repo info Научете се да докладвате формат на обекти в допълнение към поддръжката за -z.
Наличност на Git 2.52
Изходният код за Git 2.52 може да бъде изтеглен от официален сайт да го компилирам локално. Трябва да пристигне през следващите дни и седмици. хранилища на основните дистрибуции GNU/Linux в Европа (Debian, Ubuntu, Fedora, openSUSE, Arch и др.) вече имат мениджъри като Homebrew, MacPorts или Chocolatey, с обичайните времена за пакетиране.
С тази версия, Git подсилва ежедневните си операции с по-бързи и по-полезни командиПо-опростена рутина за поддръжка и първите градивни елементи от прехода към SHA-256 вече са в "main" като клон по подразбиране. Тези, които надстроят, вече могат да го тестват. git last-modifiedновото git repoгеометричната задача на git maintenance и останалите корекции, които, без да издават звук, улесняват работата както в малки, така и в гигантски хранилища.