Git 2.37 уже выпущен, и это его новости

Запуск новая версия Гит 2.37, который является одним из самые популярные системы контроля версий, надежное и высокопроизводительное программное обеспечение, предоставляющее гибкие инструменты нелинейной разработки, основанные на разветвлениях и слияниях разветвлений.

Для обеспечения целостности истории и устойчивости к изменениям при каждом коммите используется «обратный» неявный хеш всей предыдущей истории, также есть возможность проверки цифровых подписей отдельных разработчиков тегов и коммитов.



Основные новые функции Git 2.37

По сравнению с предыдущей версией, В новую версию принято 395 изменений, подготовлен с участием 75 разработчиков, из них 20 участвовали в разработке впервые.



В этой новой версии подчеркивается, что механизм частичных индексов (разреженный индекс), покрывающий только часть репозитория, se был подготовлен для широкого использования. Частичные индексы могут повысить производительность и сэкономить место в репозиториях, которые выполняют операции частичного клонирования (разреженное извлечение) или работают с неполной копией репозитория.

Новая версия завершает работу интеграция частичных индексов в команды «git show», «git sparse-checkout» и «git stash». Наиболее заметный прирост производительности от использования частичных индексов наблюдается в команде git stash, которая в некоторых ситуациях работает до 80% быстрее.



Еще одно важное изменение: реализован новый механизм «крафт-паков» для упаковки недоступных объектов, на которые нет ссылок в репозитории (на которые не ссылаются ветки или теги). Сборщик мусора удаляет недоступные объекты, но они остаются в репозитории в течение определенного времени, прежде чем удалить их, чтобы избежать состояния гонки. Для отслеживания периода недоступных объектов необходима привязка, они маркируются временем изменения подобных объектов, что не позволяет хранить их в связном файле, в котором все объекты имеют общее время изменения.

Сохранение каждого ранее использованного объекта в отдельный файл файл вызывал проблемы при наличии большого количества новых недостижимых объектов, пока нет. Предлагаемый механизм «крафт-паков» позволяет хранить все недоступные объекты в файле-связке, а данные о времени модификации каждого объекта отражаются в отдельной таблице, хранящейся в файле с расширением «.mtimes».

Для Windows и macOS есть встроенный механизм отслеживать изменения в файловой системе, которые устраняет необходимость перечисления всего рабочего каталога при выполнении таких операций, как «git status». Раньше для отслеживания изменений через хуки можно было подключить сторонние утилиты отслеживания изменений файловой системы, например Watchman, но это требовало установки дополнительных программ и конфигураций. Эта функция теперь встроена и может быть включена с помощью «git config core.fsmonitor true».



Команда «git sparse-checkout» перестал поддерживать альтернативу режиму «—cone» определение шаблона для частичного клонирования, позволяющее при определении части репозитория, подлежащей операции клонирования, перечислять отдельные файлы с использованием синтаксиса «.gitignore», что не позволяет использовать для оптимизации частичные индексы.

Из других изменений которые выделяются:



  • Повышена гибкость настройки вызова fsync() для сброса изменений на диск.
  • В параметр «core.fsyncMethod» добавлена ​​поддержка «пакетной» стратегии синхронизации, которая ускоряет работу при записи большого количества отдельных файлов за счет накопления изменений в кэше перезаписи, сбрасываемом одним вызовом fsync().
  • Команды обхода, такие как «git log» и «git rev-list», теперь имеют параметр «–since-as-filter=X» для фильтрации информации о коммитах старше «X».
  • В команде «git remote» указание флага «-v» предоставляет информацию о частичных клонах репозитория.
  • Добавлена ​​настройка «transfer.credentialsInUrl», которая может принимать значения «предупреждать», «умирать» и «разрешать». Если параметр «remote. .url» указывает учетные данные в виде простого текста, попытка выполнить операции «получить» или «отправить» завершится ошибкой, если для параметра «transfer.credentialsInUrl» установлено значение «die», или предупреждение, если установлено значение «warn».
  • По умолчанию используется новая интерактивная реализация команды «git add -i», переписанная с Perl на C.

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.




2022-06-27T18:37:18
приложений