Git 2.50: Улучшения производительности для больших репозиториев и многое другое

git-2.50

Несколько дней назад было объявлено Выпуск новой версии проекта Git 2.50, внесение более 600 изменений благодаря активному сообществу, в которое на этот раз вошло 98 разработчиков, в том числе 35 новых участников.

Новая версия Git 2.50 отличается интеграцией новых команд (git-diff-pairs), новых функций очистки, фильтрации и обслуживания, заменой рекурсивного движка слияния на ORT, а также улучшениями производительности и исправлениями ошибок.

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

В этой новой версии Git 2.50 одной из самых важных новых функций является оптимизация обработки так называемых «хламовых пакетов», То есть пакеты объектов, которые недоступны или не ссылаются на ветки или теги. Традиционно Git хранил эти объекты в одном большом файле пакета, что могло вызвать проблемы с производительностью при переупаковке репозиториев со многими из этих элементов.

С новой версией, Git позволяет вам разбить эти пакеты на несколько файлов меньшего размера., что снижает использование диска и улучшает производительность ввода/вывода для массовых операций. Кроме того, sи введите опцию –combine-cruft-below-size, что позволяет объединять небольшие пакеты в один более гибко чем предыдущая опция –max-cruft-size, не накладывая ограничения на размер объединенного файла. Эта новая функция особенно полезна в проектах с осиротевшими объектами, распределенными по нескольким пакетам.

Еще одно усовершенствование, направленное на крупномасштабные репозитории, — это экспериментальная поддержка постепенное обновление Индексы MIDX , который Они хранят информацию об объектах в отдельных слоях. с использованием файлов bitmap, что позволяет быстрее обновлять данные по мере добавления новых коммитов. Это улучшение имеет решающее значение для больших репозиториев, которым требуются быстрые операции индексации без необходимости полностью перестраивать метаданные.

Полная замена рекурсивного движка слияния на ORT

Git 2.50 представляет собой крупное изменение постоянное удаление рекурсивного движка слияния традиционный. Вместо этого, использование ОРТ консолидировано, un более современный, ремонтопригодный и эффективный термоядерный двигатель. ORT не только предлагает более точный анализ конфликтов, но и позволяет вам проверить, возможно ли слияние без создания дополнительных объектов. Кроме того, команда merge-tree теперь включает опцию –quiet для использования в качестве тихого средства проверки слияния без изменения репозитория.

gitt-diff-pairs: решение проблем масштабируемости

Обзор кода, несомненно, является одним из столпов современной совместной разработки, и различия или diffs между ревизиями играют важную роль в этом процессе. С появлением Git 2.50 было представлено решение, разработанное для масштабируемости: новая команда git-diff-pairs.

Традиционно для сравнения двух ревизий используется такая команда:

git diff HEAD~1 HEAD

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

Вот почему git-diff-pairs был специально разработан для получения необработанных входных данных непосредственно из вывода git diff-tree и эффективной и точной генерации соответствующих патчей.

Использовать его очень просто:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Эта команда берет предоставленные пары blob и генерирует точный вывод diff, сохраняя контекстную информацию и позволяя разбить работу на более мелкие партии. Это открывает дверь для параллельной обработки, повышает эффективность ресурсов и облегчает масштабируемость в инструментах на основе diff, таких как GitLab.

Новые функции очистки, фильтрации и обслуживания

Git 2.50 включает несколько дополнительных инструментов, предназначенных для улучшения обслуживания репозитория:

  • Команда была добавлена. git reflog сброс, что позволяет полностью удалить reflog для определенной ветки, что идеально подходит для очистки истории работы, когда вам больше не нужно поддерживать предыдущие ссылки.
  • Выбор -фильтр cat-file –batch теперь доступен в git, позволяя фильтровать результаты по типу объекта.

Кроме того, также отмечено несколько внутренних оптимизаций:

  • Улучшенное использование символических ссылок с кэшированием префиксов и сокращением избыточных проверок.
  • Удаление зависимостей Perl в документации и тестовых скриптах с заменой их функциями оболочки или реализациями C, что упрощает их компиляцию в системах с минималистскими конфигурациями.
  • Включая контроллер userdiff для анализа различий в файлах .ini.
  • Улучшена совместимость команды git send-email с SMTP-серверами, такими как Outlook.

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