Versiunea de control sursă Git 2.38

A fost anunțată lansarea sistemului de control al surselor distribuite Git 2.38. Git este unul dintre cele mai populare, fiabile și de înaltă performanță sisteme de control al versiunilor, oferind instrumente flexibile de dezvoltare neliniară bazate pe ramificare și îmbinare. Pentru a asigura integritatea istoriei și rezistența la modificări retroactive, în fiecare commit este utilizat hashing implicit al întregului istoric anterior; de asemenea, este posibilă certificarea etichetelor individuale și commit-urilor cu semnăturile digitale ale dezvoltatorilor.

În comparație cu versiunea anterioară, noua versiune a inclus 699 de modificări, pregătite cu participarea a 92 de dezvoltatori, dintre care 24 au participat pentru prima dată la dezvoltare. Principalele inovații:

  • В основной состав включена утилита «scalar», разработанная компанией Microsoft для управления крупными репозиториями. Утилита изначально была написана на языке C#, но в git включён переделанный вариант на языке Си. Новая утилита отличается от команды git включением по умолчанию дополнительных возможностей и настроек, влияющих на производительность при работе с очень крупными репозиториями. Например, при использовании scalar применяется:
    • Частичное клонирование для работы с неполной копией репозитория.
    • Встроенный механизм отслеживания изменений в файловой системе (FSMonitor), позволяющий обойтись без перебора всего рабочего каталога.
    • Индексы, охватывающие объекты в разных pack-файлах (multi-pack).
    • Файлы commit-graph с индексом графа коммитов, применяемым для оптимизации доступа к информации о коммитах.
    • Фоновые периодические работы для поддержания оптимальной структуры репозитория в фоновом режиме, не блокируя интерактивный сеанс (раз в час выполняется работа по упреждающей загрузке свежих объектов из удалённого репозитория и обновлению файла с графом коммитов, а каждую ночь запускается процесс упаковки репозитория).
    • Режим «sparseCheckoutCone», ограничивающий допустимые шаблоны при частичном клонировании.
  • В команду «git rebase» добавлена опция «—update-refs» для обновления зависимых веток, пересекающихся с перемещаемыми ветками, чтобы вручную не выполнять операции checkout к каждой зависимой ветке для переключения на требуемый коммит.
  • Обеспечена совместимость команды «git rm» с частичными индексами.
  • Улучшено поведение команды «git mv A B» при перемещении файла из рабочей области с частичными индексами в режиме «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.

Sursa: opennet.ru

Adauga un comentariu