Кілька днів тому було оголошено Випуск нової версії проєкту Git 2.50, впроваджуючи понад 600 змін завдяки активній спільноті, яка цього разу включала 98 розробників, зокрема 35 нових учасників.
Ця нова версія Git 2.50 вирізняється інтеграцією нових команд (git-diff-pairs), новими функціями для очищення, фільтрації та обслуговування, заміною рекурсивного механізму злиття на ORT, а також покращеннями продуктивності та виправленнями помилок.
Ключові нові можливості Git 2.50
У цій новій версії Git 2.50 однією з найважливіших нових функцій є оптимізація обробки так званих «пакетів від шкідників», Тобто, пакети об'єктів, які недоступні або на які не посилаються гілки чи теги. Традиційно Git зберігав ці об'єкти в одному великому файлі пакета, що могло спричинити проблеми з продуктивністю під час перепаковування репозиторіїв з багатьма з цих елементів.
З новою версією, Git дозволяє розділити ці cruft-паки на кілька менших файлів, що зменшує використання дискового простору та покращує продуктивність вводу/виводу для масових операцій. Крім того, sі введіть опцію –combine-cruft-below-sizeЯкий дозволяє об'єднувати невеликі пакети в один більш гнучко ніж попередній параметр –max-cruft-size, без обмеження сумарного розміру файлів. Ця нова функція особливо корисна в проектах із осиротілими об'єктами, розподіленими по кількох пакетах.
Ще одним удосконаленням, спрямованим на великомасштабні репозиторії, є експериментальна підтримка для поступове оновлення Індекси MIDX , котрий Вони зберігають інформацію про об'єкти в окремих шарах використання растрових файлів, що дозволяє швидше оновлювати дані в міру додавання нових комітів. Це покращення є критично важливим для великих репозиторіїв, які потребують швидкого індексування без необхідності повного перебудовування метаданих.
Повна заміна рекурсивного механізму злиття на ORT
Git 2.50 вносить суттєві зміни завдяки постійне видалення рекурсивного термоядерного двигуна традиційний. Натомість, використання ОРТ консолідоване, А більш сучасний, ремонтопридатний та ефективний термоядерний двигун. ORT не лише пропонує точніший аналіз конфліктів, але й дозволяє перевірити, чи можливе злиття без створення додаткових об'єктів. Крім того, команда merge-tree тепер містить опцію –quiet для використання як тиха перевірка злиття без зміни репозиторію.
gitt-diff-pairs: рішення проблем масштабованості
Перевірка коду, безсумнівно, є одним із стовпів сучасної спільної розробки, і відмінності або diff між ревізіями відіграють важливу роль у цьому процесі. З появою Git 2.50 було представлено рішення, розроблене для масштабованості: нова команда git-diff-pairs.
Традиційно, для порівняння двох ревізій використовується команда типу:
git diff HEAD~1 HEAD
Це створює повний патч, що містить усі зміни між переліченими ревізіями. Хоча це ефективно в багатьох випадках, це може бути проблемою з продуктивністю під час роботи з великими наборами змінених файлів.
Ось чому git-diff-pairs був спеціально розроблений для отримання необроблених вхідних даних безпосередньо з виводу git diff-tree та ефективної та точної генерації відповідних патчів.
Використання таке ж просте, як:
git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z
Ця команда бере надані пари блобів та генерує точний вивід diff, зберігаючи контекстну інформацію та дозволяючи розділити роботу на менші пакети. Це відкриває шлях до паралельної обробки, підвищує ефективність використання ресурсів та полегшує масштабованість в інструментах на основі diff, таких як GitLab.
Нові функції для очищення, фільтрації та обслуговування
Git 2.50 містить кілька додаткових інструментів, призначених для покращення обслуговування репозиторіїв:
- Команду додано. падіння рефлогу git, що дозволяє повністю видалити журнал посилань для певної гілки, що ідеально підходить для очищення історії роботи, коли вам більше не потрібно підтримувати попередні посилання.
- Вибір –фільтр Команда cat-file –batch тепер доступна в git, що дозволяє фільтрувати результати за типом об'єкта.
Крім того, також виділяється кілька внутрішніх оптимізацій:
- Покращено використання символічних посилань, з кешуванням префіксів та зменшенням надлишкових перевірок.
- Видалення залежностей Perl у документації та тестових скриптах, замінюючи їх функціями оболонки або реалізаціями на C, що спрощує їх компіляцію на системах з мінімалістичними конфігураціями.
- Включаючи контролер різниця користувачів для аналізу відмінностей у файлах .ini.
- Покращено сумісність команди git send-email із SMTP-серверами, такими як Outlook.
Нарешті, якщо вам цікаво дізнатися більше про це, ви можете ознайомитися з деталями в наступне посилання.