Git 2.50: Поліпшення механізму злиття та продуктивності
Майже через три місяці після попереднього релізу 2.49, Git, розподілена система контролю версій та основний інструмент у розробці програмного забезпечення, випустив нову версію 2.50. Git допомагає розробникам ефективно керувати змінами у своєму коді в різних проєктах.
Удосконалене керування cruft-пакетами
Помітним удосконаленням є обробка кількох cruft-пакетів. Початково представлені в Git 2.37, cruft-пакети зберігають недосяжні об’єкти в репозиторіях. Git 2.43 представив опції для керування цими пакетами, але проблеми з використанням зберігалися.
Git 2.50 вирішує ці проблеми за допомогою нової чіткої опції --combine-cruft-below-size
. Цей інструмент дозволяє користувачам ефективно об’єднувати менші cruft-пакети, значно поліпшуючи гігієну репозиторіїв з часом.
Інкрементальні бітові карти досяжності
Ще одним важливим досягненням є впровадження інкрементальних мульти-пакетних бітових карт досяжності. Після удосконалень інкрементального мульти-пакетного індексу з Git 2.47, Git 2.50 ще більше підвищує продуктивність у великих репозиторіях, забезпечуючи інкрементальні оновлення бітових карт досяжності.
Перехід на новий механізм злиття ORT
Можливо, найбільш захопливим оновленням у цьому релізі є повний перехід від старішого механізму злиття Git, “recursive”, до швидшого та більш підтримуваного механізму “ORT” (Ostensibly Recursive’s Twin).
Представлений у Git 2.33 і встановлений за замовчуванням у 2.34, ORT тепер повністю замінив застарілий рекурсивний механізм. Ця зміна підвищує продуктивність і впроваджує нові функціональні можливості, такі як можливість тестування можливості об’єднання без збереження нових об’єктів злиття.
Покращення для git cat-file
Розробники, які покладаються на скриптування об’єктів репозиторію, оцінять вдосконалення для git cat-file
. Git 2.50 запроваджує спрощену фільтрацію об’єктів безпосередньо в git cat-file
, спрощуючи поширені завдання, такі як вилучення конкретних типів об’єктів.
Крім того, рідко використовувана опція --allow-unknown-type
була визнана застарілою, оптимізуючи функціональність інструменту та видаляючи застарілі особливості.
Оновлення для завдань обслуговування
Завдання з обслуговування стають більш інтуїтивними завдяки оновленням для git maintenance
. Додані нові завдання, включаючи worktree-prune
, rerere-gc
і reflog-expire
, які паралельні існуючим операціям збирання сміття та спрощують регулярне очищення репозиторію.
Користувачі також отримують можливість налаштовувати розмір пакетної обробки для пакування вільних об’єктів, забезпечуючи розширений контроль над поведінкою обслуговування.
Мережеві вдосконалення та зменшення залежностей
Нові конфігурації для поведінки TCP keepalive вирішують питання мережевої продуктивності та пропонують точніший контроль над HTTP-з’єднаннями. Більш того, залежність від Perl була суттєво зменшена, повністю видаливши її з тестового набору Git і ланцюжка інструментів документації, покращуючи портативність і зменшуючи зовнішні залежності.
Удосконалення користувацького інтерфейсу
Нарешті, удосконалення користувацького інтерфейсу включають чіткіші коментарі під час інтерактивних ребейсів і підвищену ефективність у розріджених чекаутах при використанні git add -p
або git add -i
.
Для отримання додаткової інформації та деталей, відвідайте офіційний сайт Git або ознайомтеся з офіційним оголошенням про випуск Git 2.50.