Що нового в Git 2.52: команди, продуктивність та безпека

  • Нові команди: git last-modified, git repo та доповнення до git refs для поширених операцій.
  • Покращене обслуговування: геометрична задача в обслуговуванні git та багаторазова оптимізація продуктивності.
  • Безпека в процесі розробки: перші кроки до сумісності SHA-1/SHA-256 та зміна на "main" за замовчуванням у наступному великому випуску.
  • Більше утиліт: покращення фільтрів Блума, очищення розрідженого вилучення та нові функції в commit-graph, stash та diff-tree.

git 2.52

Git 2.52 тепер доступні як стабільне оновлення цієї популярної розподіленої системи контролю версій. Версія постачається з Нові функції, коригування технічного обслуговування та покращення продуктивності Результат роботи понад 94 співробітників, 33 з яких вперше беруть участь у проєкті.

Серед найбільш помітних змін – нові підкоманди для дослідження репозиторіїв, розумніший робочий процес обслуговування та прогрес у переході на SHA-256. Все це реалізовано з послідовним та стриманим підходом. практичний підхід що керують репозиторіями різного розміру.

Нові команди git 2.52 для дослідження репозиторіїв

Найяскравішою новинкою є git last-modifiedРозроблено для ефективного отримання останнього коміту, який торкався кожного шляху. У репозиторіях з багатьма записами цей підхід дозволяє уникнути повторного перегляду історії та може бути у кілька разів швидше, ніж ланцюжок ls-tree + logЗгідно з внутрішніми тестами, скорочення часу з секунд до мілісекунд у реальних сценаріях.

Двигун last-modified Його розробляли роками на GitHub під назвою дерево звинуваченьпідживлюючи свою «звинувачення» на рівні дерев з 2012 року. Згодом, Інженери GitLab Вони вдосконалили набір патчів, щоб інтегрувати його в Git 2.52, хоча все ще є функції, які потрібно додати, такі як форматування диска для кешування результатів з попередніх страт.

Експериментальний також прибуває git repoАсортимент для ознайомлення з функціями репозиторію. З git repo info чи можете ви сказати, чи це так голий o дрібний, формат об'єктів та посилань, а також за допомогою git repo structure друкуються структурна статистика (кількість комітів, дерева, блоби, гілки, теги тощо). Крім того, info включає скорочений варіант -z і здатний повідомити про формат об'єкта б / в.

Для тих, хто працює на низькому рівні з рекомендаціями, git refs сума git refs list (псевдонім git for-each-ref) А git refs exists (подібний до git show-ref --existsВони не пропонують безпрецедентних можливостей, але вони зосереджуються на частих операціях посилань під однією командою.

Маленький, але корисний: зараз git cmd --help-all Це також працює поза межами сховищаЦе спрощує доступ до глобальної довідки без необхідності ініціалізації.

Технічне обслуговування та продуктивність

Git 2.52 представляє завдання geometric в git maintenance Він уникає перепакування «все в одному», коли це можливо, та рідше видаляє недоступні об’єкти. Завдання перевіряє пакети для формування геометрична прогресія за кількістю об'єктів та ущільнюйте без обрізки, коли це доречно; якщо операція завершиться утворенням однієї пачки, виконайте git gc повністю готовий для укріплення та обрізки.

Що стосується швидкості, то є помітні досягнення: git describe Тепер він використовує чергу пріоритетів і виграє приблизно Продуктивність 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 цього вимагатиме та розширити переписані фрагменти.

Покращення робочих процесів та зручності використання

Використання фільтри Блума зі зміненим шляхомІмовірнісний фільтр, який пришвидшує подорожі, коли їх звужують за маршрутами. Тепер вони використовуються навіть тоді, коли pathspec містить часткові шаблони підстановки (наприклад, 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 отримує --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 та решту налаштувань, які без жодного звуку забезпечують плавну роботу як у малих, так і в гігантських репозиторіях.

Агент GitLab Duo
Пов'язана стаття:
Платформа агентів GitLab Duo: Нова ера співпраці DevSecOps з агентами штучного інтелекту