Випуск системи керування вихідними текстами Git 2.38

Подано випуск розподіленої системи управління вихідними текстами Git 2.38. Git є однією з найпопулярніших, надійних та високопродуктивних систем управління версіями, що надає гнучкі засоби нелінійної розробки, що базуються на відгалуженні та злитті гілок. Для забезпечення цілісності історії та стійкості до змін заднім числом використовуються неявне хешування всієї попередньої історії в кожному коміті, також можливе посвідчення цифровими підписами розробників окремих тегів і коммітів.

Порівняно з минулим випуском у нову версію прийнято 699 змін, підготовлених за участю 92 розробників, з яких 24 уперше взяли участь у розробці. Основні нововведення:

  • В основний склад включена утиліта scalar, розроблена компанією Microsoft для управління великими репозиторіями. Утиліта спочатку була написана мовою C#, але git включений перероблений варіант мовою Сі. Нова утиліта відрізняється від команди git включенням за умовчанням додаткових можливостей та налаштувань, що впливають на продуктивність при роботі з дуже великими репозиторіями. Наприклад, при використанні scalar застосовується:
    • Часткове клонування до роботи з неповною копією репозиторію.
    • Вбудований механізм відстеження змін у файловій системі (FSMonitor), що дозволяє уникнути перебору всього робочого каталогу.
    • Індекси, що охоплюють об'єкти у різних pack-файлах (multi-pack).
    • Файли commit-graph з індексом графа коммітів, які застосовуються для оптимізації доступу до інформації про коміти.
    • Фонові періодичні роботи для підтримки оптимальної структури репозиторію у фоновому режимі, не блокуючи інтерактивний сеанс (раз на годину виконується робота з запобігання завантаженню свіжих об'єктів з віддаленого репозиторію та оновленню файлу з графом коммітів, а щоночі запускається процес пакування репозиторію).
    • Режим "sparseCheckoutCone", що обмежує допустимі шаблони при частковому клонуванні.
  • У команду «git rebase» додано опцію «—update-refs» для оновлення залежних гілок, що перетинаються з гілками, що переміщуються, щоб вручну не виконувати операції checkout до кожної залежної гілки для перемикання на необхідний коміт.
  • Забезпечено сумісність команди «git rm» із частковими індексами.
  • Поліпшено поведінку команди git mv AB при переміщенні файлу з робочої області з частковими індексами в режимі cone у зовнішню область, для якої цей режим не застосовується.
  • Проведено оптимізацію формату bitmap-фалів для роботи з великими репозиторіями — додано опціональну індексну таблицю зі списком вибраних коммітів та їх зміщень.
  • У команді «git merge-tree» реалізовано новий режим, при якому на основі двох зазначених коммітів обчислюється дерево з результатом злиття, так, якби історії цих коммітів були об'єднані.
  • Додано налаштування «safe.barerepository» для керування можливістю розміщення bare-репозиторіїв (репозиторії, що не містять робочого дерева) всередині інших git-репозиторіїв. При встановленні значення «explicit» буде допускатися робота з bare-репозиторіями, розміщеними тільки у верхньому каталозі. Для розміщення bare-репозиторіїв у підкаталогах слід використовувати значення «all».
  • До команди «git grep» додана опція «-m» («—max-count»), аналогічна однойменній опції GNU grep і дозволяє обмежити кількість збігів, що виводяться.
  • У команді «ls-files» реалізовано опцію «—format» для налаштування полів, що виводяться (наприклад, можна включити виведення імені об'єкта, режимів тощо).
  • У git cat-file при показі вмісту об'єктів реалізована можливість обліку прив'язок авторів до email, заданих у файлі mailmap.

Джерело: opennet.ru

Додати коментар або відгук