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

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3265
Зарегистрирован: 20.08.2022

#

Выпуск системы управления исходными текстами Git 2.39
Дата публикации:Tue, 13 Dec 2022 10:36:59 +0300


После двух месяцев разработки опубликован выпуск распределенной системы управления исходными текстами 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
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=58318

Жизнь за Нер'зула!

Ответить