Выпуск системы управления исходными текстами Git 2.39

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
13-Дек-2022 12:56

После двух месяцев разработки опубликован выпуск распределенной системы управления исходными текстами Git 2.39. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям "задним числом" используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.
По сравнению с прошлым выпуском в новую версию принято 483 изменений, подготовленных при участии 86 разработчиков, из которых 31 впервые принял участие в разработке. Основные новшества:
  • В команду "git shortlog", предназначенную для отображения сводок со статистикой из истории изменений, добавлена опция "--group" для произвольной группировки коммитов по полям, не ограничивающимся автором или коммитером. Например, для показа списка разработчиков с информацией о числе изменений, учитывающего помощников, упомянутых в поле "Co-authored-by", можно использовать команду:
    git shortlog -ns --group=author --group=trailer:co-authored-by
    Вывод shortlog можно агрегировать при помощи спецификаторов форматирования и опция "--group" позволяет существенно упростить создание сложных отчётов и избавиться от выполнении дополнительных команд сортировки.
    Например, для создания отчёта с информацией о том, сколько коммитов для заданного релиза было принято в каждом месяце, можно указать:
    git shortlog v2.38.0.. --date='format:%Y-%m' --group='%cd' -s
        2  2022-08
        47  2022-09
       405  2022-10
       194  2022-11
         5  2022-12
    Раньше для выполнения аналогичной операции потребовалось бы привлечение утилит sort и uniq:
    git log v2.38.0.. --date='format:%Y-%m' --format='%cd' | sort | uniq -c
  • Расширены возможности механизма "cruft packs", предназначенного для упаковки недостижимых объектов, на которые в репозитории отсутствуют ссылки (не ссылаются ветки или теги). Недостижимые объекты удаляются сборщиком мусора, но до удаления определённое время остаются в репозитории для исключения состояний гонки. Механизм "cruft packs" позволяет хранить все недостижимые объекты в одном pack-файле, а данные о времени модификации каждого объекта отражать в отдельной таблице, хранимой в отдельном файле с расширением ".mtimes", что бы они не пересекались с общим временем изменения.
    Время нахождения недостижимых объектов в репозитории перед фактическим удалением определяется опцией "--prune=<date>". При этом несмотря на то, что задержка перед удалением является достаточно эффективным и практичным способом предотвращения повреждения репозитория из-за состояния гонки, он не является на 100% надёжным. Чтобы упростить восстановление повреждённого репозитория в новом выпуске предоставлена возможность сохранения отсутствующих объектов, для чего в команду "git repack" добавлена опция "--expire-to", позволяющая задать файл для создания внешней копии всех удаляемых объектов. Например, для сохранения в файле backup.git недостижимых объектов, которые не менялись последние 5 минут, можно использовать команду:
    git repack --cruft --cruft-expiration=5.minutes.ago -d --expire-to=../backup.git
  • Значительно увеличена (до 70%) скорость выполнения операции "git grep --cached" при поиске в областях, в которых применяется частичное клонирование (sparse-checkout) и для которых имеются частичные индексы (sparse index). Ранее при указании опции "--cached" вначале осуществлялся поиск в обычном индексе, а потом в частичных, что приводило к возникновению ощутимых задержек при поиске в больших репозиториях.
  • Ускорено выполнение на сервере проверки связности новых объектов перед их помещением в репозиторий при выполнении операции "git push". За счёт перехода к учёту при проверке только объявленных ссылок, в тестовом репозитории с 7 млн ссылок из которых только 3% охвачены операцией push внесённые оптимизации позволили сократить время проверки в 4.5 раза.
  • Для защиты от потенциальных целочисленных переполнений в коде в команде "git apply" ограничен максимальный размер обрабатываемых патчей. В случае если размер патча превышает 1 ГБ теперь будет выводиться ошибка.
  • Для защиты от потенциальных уязвимостей внесены изменения для чистки лишней информации из заголовков, выставляемых при использовании модуля h2h3 с опцией GIT_TRACE_CURL=1 или GIT_CURL_VERBOSE=1 вместе с HTTP/2.
  • При выполнении операции check out с веткой, которая является символической ссылок на другую ветку, команда "git symbolic-ref HEAD" теперь выводит название целевой ветки, а не имя символической ссылки.
  • Добавлена поддержка аргумента @{-1} в опции "--edit-description" ("git branch --edit-description @{-1}") для редактирования описания прошлой ветки.
  • Добавлена команда "git merge-tree --stdin", позволяющая передать список параметров через стандартный входной поток.
  • На сетевых файловых системах по умолчанию отключён обработчик fsmonitor, отслеживающий изменения в ФС.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_git
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 11:23
Часовой пояс: UTC + 5