Опубліковано випуск розподіленої системи керування вихідними текстами Git 2.48. також посвідчення цифровими підписами розробників окремих тегів та комітів. Код Git поширюється під ліцензією GPLv2+.
Порівняно з минулим випуском у нову версію прийнято 605 змін, підготовлених за участю 93 розробників, з яких 35 уперше беруть участь у розробці. Основні нововведення:
- Реалізована можливість збирання з використанням складальної системи Meson, на додаток до GNU Make і CMake. і не такий простий, як хотілося б. для крос-платформних збірок і робить збірку більш доступною для новачків або розробників, які не мають досвіду роботи з утилітою Make.
- Додано складальні опції, що дозволяють використовувати альтернативні реалізації хешу SHA-1 при обчисленні контрольних сум, що використовуються для перевірки цілісності блоків даних у pack-файлах. Продуктивність обчислення контрольних сум має велике значення, наприклад, їх обчислення при клонуванні репозиторію з ядром Linux витрачається близько 78% процесорного часу. Реалізація, що використовується за замовчуванням, включає додаткові перевірки колізій і захист від атак на SHA-1, таких як SHAttered і Shambles. Подібний захист, що споживає додаткові ресурси, має сенс тільки при використанні SHA-1 у криптографічних цілях і не є корисним під час перевірки цілісності індексних даних.
Для складання Git з швидшою реалізацією SHA-1, не придатною для криптосистем, запропоновано серію опцій *_UNSAFE, наприклад, «OPENSSL_SHA1_UNSAFE». У GitHub складання зі спрощеним SHA-1 дозволило на 10-13% підвищити продуктивність операцій вилучення та клонування даних.
- Додано можливість використання в команді «range-diff» опції «-remerge-diff», що дозволяє показати відмінності між загальним результатом злиття та фактичними даними, відображеними в коміті після обробки команди «merge». При використанні опції «-remerge-diff» різницю між дозволами конфліктів не поділяються кожної батьківської гілки, а показуються загальні різницю між файлом, мають конфлікти злиття, і файлом, у якому конфлікти вирішені. У контексті команди "range-diff" нова опція може виявитися корисною для порівняння наборів комітів після перенесення послідовності комітів командою "rebase" з опцією "-rebase-merges".
- Додано можливість запуску тестового набору Git із включенням режиму виявлення витоків пам'яті. Так як git надає утиліти, що завершують роботу після виконання викликаної функції, витоку пам'яті раніше не розглядалися як велика проблема. Необхідність повного усунення витоків пам'яті стала актуальною після початку роботи над виносом внутрішньої функціональності в окрему бібліотеку, яка може застосовуватися в процесах, що тривало працюють.
- Почалося формування списку застарілих режимів і можливостей, підтримку яких планують припинити в майбутньому.
- Продовжено оптимізацію роботи команди «git for-each-ref», що виводить список посилань у репозиторії. Оптимізація, що об'єднує обробники для фільтрації посилань та форматування виводу, тепер застосовується не тільки для невідсортованого виводу, але й за умови опції «-sort».
- Поліпшено реалізацію бекенду «reftable» з блочним сховищем для ефективного зберігання в репозиторії посилань на гілки та теги. Reftable дозволяє значно прискорити пошук, читання та запис у репозиторіях з дуже великою кількістю посилань. У новій версії припинено звернення до деяких допоміжних API для подальшого виключення бібліотеки libgit із складальних залежностей. Реалізовано адаптивну обробку помилок, що повертаються функціями виділення пам'яті (нестача пам'яті тепер не призводить до аварійного завершення роботи). Прискорено операції створення посилань та знижено споживання пам'яті.
- У реалізації часткового клонування вирішено проблеми, що призводили до зациклювання та ушкодження репозиторію після виконання команди «git gc».
- За виконання команди «git fetch » у разі відсутності на локальній системі «refs/remotes/ /HEAD» та наявності на іншій стороні гілки, на яку посилається HEAD, «refs/remotes/ /HEAD» тепер перенаправляється на цю гілку. Для керування синхронізацією «refs/remotes/ /HEAD» зі значенням HEAD з іншого боку з'єднання додано налаштування remote. .followRemoteHEAD».
- Додано налаштування «remote. .serverOption» аналогічна опції командного рядка «serverOption= ».
- У команді «git rebase-rebase-merges» по можливості забезпечене використання імен гілок як міток.
- У команди 'git notes add' та 'git notes append' доданий прапор '-e', що відкриває примітку у зовнішньому текстовому редакторі, вказаному через змінну оточення GIT_EDITOR.
- Поліпшено сумісність з GCC 15 та стандартом C23.
- Припинено підтримку старих версій libcURL і Perl.
Джерело: opennet.ru
