Недавно анонсирован выпуск новой версии распределенная система управления исходным кодом Git 2.38, что по сравнению с предыдущей версией, в новой версии принято 699 изменений, подготовленных с участием 92 разработчиков, из которых 24 участвовали в разработке впервые.
Тем, кто не знаком с Git, следует знать, что это одна из самых популярных систем контроля версий, надежное и высокопроизводительное программное обеспечение, предоставляющее гибкие инструменты нелинейной разработки, основанные на разветвлениях и слияниях разветвлений.
Для обеспечения целостности истории и устойчивости к изменениям задним числом в каждом коммите используется неявное хеширование всей предыдущей истории, также есть возможность проверки цифровых подписей разработчиков отдельных тегов и коммитов.
Основные новые функции Git 2.38
В представленной новой версии Git 2.38 подчеркивается, что включена скалярная утилита разработан Microsoft для управления большими репозиториями. Утилита изначально была написана на C#, но модифицированная версия C включена в git. Новая утилита отличается от команды git наличием дополнительных функций и настроек значения по умолчанию, влияющие на производительность при работе с очень большими репозиториями.
Например, при использовании скаляра применяется следующее:
- Частичный клон для работы с неполной копией репозитория.
- Встроенный механизм отслеживания изменений файловой системы (FSMonitor), который избавляет от необходимости перечислять весь рабочий каталог.
- Индексы, охватывающие объекты в разных файловых пакетах (многопакетные).
- Файлы графа фиксации с индексом графа фиксации, используемым для оптимизации доступа к информации о фиксации.
- Периодическая фоновая работа по поддержанию оптимальной структуры репозитория в фоновом режиме без блокировки интерактивной сессии (раз в час выполняется работа по получению новых объектов из удаленного репозитория и обновлению файла с графом фиксации, а также процесс упаковки репозиторий запускается каждую ночь).
- Режим sparseCheckoutCone, который ограничивает допустимые шаблоны при частичном клонировании.
Еще одно изменение, представленное в этой новой версии Git 2.38, — это Параметр «-update-refs» для команды «git rebase» для обновления зависимых ветвей, которые пересекаются с перемещенными ветвями, поэтому вам не нужно вручную извлекать каждую зависимую ветвь, чтобы переключиться на желаемую фиксацию.
Также подчеркивается, что формат растрового файла был оптимизирован для работы с большими репозиториями— Добавлена необязательная индексная таблица со списком выбранных коммитов и их смещениями.
В дополнение к этому мы можем найти, что в команде «git merge-tree» реализует новый режим в котором, на основе двух конкретных коммитов вычисляется дерево с результатом слияния, как если бы истории этих коммитов были объединены.
Конфигурация добавлена «safe.barerepository» для управления репозиториями, не содержащими дерева работы, их можно поместить в другие репозитории git. Если установлено значение «explicit», голые репозитории, расположенные в верхнем каталоге, смогут работать только. Чтобы иметь возможность размещать голые репозитории в подкаталогах, необходимо использовать значение «все».
Из других изменений которые выделяются из этой новой версии:
- В команду «git grep» добавлена опция «-m» («-max-count»), аналогичная одноименной опции GNU grep и позволяющая ограничить количество результатов совпадений.
- Команда «ls-files» реализует параметр «—format» для настройки полей вывода (например, вы можете включить вывод имени объекта, режимов и т. д.).
- В «git cat-file» при отображении содержимого объектов реализована возможность учитывать авторские ссылки на электронную почту, указанные в файле карты почты.
- Команда «git rm» совместима с частичными индексами.
- Улучшено поведение команды «git mv AB» при перемещении файла из рабочей области с частичными индексами в режиме «конус» во внешнюю область, где этот режим не применяется.
В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.