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

По сравнению с прошлым выпуском в новую версию принято 500 изменений, подготовленных при участии 74 разработчиков, из которых 20 впервые приняли участие в разработке. Основные новшества:

В «git log» и другие команды добавлена опция «—date=human», позволяющая выводить даты в сокращённом читаемом виде, адаптивно выбирая формат в зависимости от давности события. Например, вместо «Mon Feb 25 08:20:14 2019 -0500» для только что совершённых действий будет указано «N минут назад» (как в режиме «—date=relative»), для недавних событий будет показан день и час, а для старых изменений только день, месяц и год:

Дополнительно предусмотрена опция «—date=auto:human», которая применяет новое форматирование только при выводе через терминал, а при перенаправлении вывода в файл или в другую команду использует формат по умолчанию:

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

Добавлена опциональная возможность применения алгоритма хэширования SHA-256 вместо скомпрометированного SHA-1 при сборке Git в режиме «NewHash». Код для обхода дерева объектов изменён с учётом того, что имена объектов могут вычисляться не только с использоваинем SHA-1;

В команде «git cherry-pick» обеспечена возможность использования опции «-m» (mainline) при указании «git cherry-pick -m1», т.е. позволяет повторно применить коммит при выборе первого родителя этого коммита в качестве mainline-ветки. В остальных случаях как и раньше будет выводиться ошибка;

C целью оптимизации производительности команда «git log -G», осуществляющая поиск по регулярному выражению теперь не выполняет поиск в бинарных файлах, если дополнительно явно не указана опция «—text» или не применён textconv;
Добавлена настройка «http.version», позволяющая определить предпочитаемую версию протокола HTTP, применяемую при извлечении или отправке изменений. Для работы опции требуется относительно свежая библиотека cURL;

«git push $there $src:$dst» выдаёт ошибку, если в $dst указан относительный путь и точно не ясно, что пользователь имел в виду. В новой версии текст ошибки стал более понятным и добавлена подсказка с
попыткой угадать место назначения с учётом типа объекта;

В команде «git checkout [tree-ish] path…» обеспечен вывод числа путей, которые будут извлечены из индекса или дерева объектов (tree-ish);

В команду «git quiltimport» добавлена опция «—keep-non-patch»;

Команды «git worktree remove» и «git worktree move» теперь можно применять при наличии в рабочем дереве неинициализированных субмодулей (ранее данные операции невозможно было использовать при наличии любого субмодуля);

Обновлены реализации команд «git multimail» и «git p4»;

При указании опции «—format=» для веток, тегов и при переборе ссылок расширен перечень свойств объектов, извлекаемых через API object_info;

В команде «git rebase -i» обеспечен повторный запуск команды, указанной при помощи настройки ‘exec’, в случае если прошлая попытка не увенчалась успехом;

Обновлена реализация команды «git diff —color-moved-ws»;

В «log —format» добавлена поддержка флага «%S» для отображения подсказки об источнике поступления коммита;

В скрипт «git instaweb», используемый для запуска интерфейса gitweb для доступа через Web к локальному репозиторию, добавлена поддержка применения предоставляемых в Python модулей для встраивания функциональности http-сервера (http.server=python), без необходимости установки внешних http-серверов, таких как lighttp и apache httpd;

Проведена оптимизация и чистка кода, связанного с проверкой несвязанных объектов. Обновлена реализация кэша для ускорения поиска несвязанных объектов;

Запрещено использование в коде функции «strncat()»;

Реализация «git rebase —merge» переписана для использования общего кода, уже применяемого в «git rebase -i»;

Некоторые части «git bisect», ранее реализованные на Shell, переписаны на языке Си;

В «git fetch-pack» и «git fetch —deepen=…» добавлена поддержка второй версии протокола Git. Команды «git fetch» и «git upload-pack» адаптированы для отправки данных через дополнительные каналы доставки при использовании второй версии протокола Git.

Источник

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here