Выпуск распределенной системы управления исходными текстами Git 2.16.0
Подготовлен выпуск распределенной системы управления исходными текстами Git 2.16.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. По сравнению с прошлым выпуском в новую версию принято 509 изменений, подготовленных при участии 91 разработчика, из которых 26 впервые приняли своё участие в разработке.
Основные изменения:
- Использование пустой строки в качестве охватывающей все варианты маски пути теперь считается ошибкой. Например, команда git add '' больше не будет работать. Указанная возможность была объявлена устаревшей ещё в 2016 году;
- Скрипты с реализацией хуков отныне будут игнорироваться если для них не выставлен флаг исполняемого файла. По умолчанию при подобном игнорировании будет выводиться предупреждение, которое можно отключить через опцию advice.ignoredHook;
- В «git pull» добавлена обработка опции »--[no-]signoff» и её передача в «git merge»;
- Значение опции »--push-option=строка» к «git push» теперь по умолчанию устанавливается в список строк, установленный через переменную push.pushOption;
- В «gitweb» для проверки доступа к директории вместо Perl-оператора »-x» применена pragma «filetest 'access'»;
- Команда «git stash save» объявлена устаревшей, вместо неё следует использовать «git stash push»;
- Обработчик для взаимодействия с MediaWiki переработан для работы с пространствами имён mediawiki и корректной обработки слишком длинных имён страниц (теперь имена обрезаются без потери суффикса ».mw»);
- В команде «git for-each-ref» опция »--format=…» расширена возможностью отображения имени внешнего репозитория и его использования на удалённой стороне в 'upstream' и 'push' через параметр »%(push: remotename)»;
- Выполнение «git bisect run» без явного указания каких-либо команд теперь приводит к выводу ошибки, вместо обработки всех коммитов как успешно протестированных;
- Представлено новое расширение fsmonitor для взаимодействия со средствами мониторинга состояния ФС, позволяющее ускорить выполнение «git status» и других операций, которым необходимо отслеживать какие из файлов были изменены;
- В командах семейства «diff» обеспечено игнорирование различий в указании возврата каретки в конце строки;
- Команда «git add --renormalize .» теперь позиционируется как новый и надёжный способ записи сведений о нормализации символов конца строки и других замен в данных репозитория при помощи функции «convert_to_git ()»;
- В командах «git branch» и «git checkout -b» теперь блокируют попытки создания ветки с именем «HEAD»;
- В команде «git branch --list» по умолчанию реализован вывод с использованием постраничного просмотра (pager), когда содержимое не вмещается в терминал. По аналогии с «git tag --list» данное поведение можно контролировать при помощи настройки pager.branch;
- В команды подобные «git grep -W» и «git diff -W» добавлена эвристика для раскрытия строк, похожих на функцию (например «diff.*.xfuncname») для включения в вывод блоков комментариев, идущих непосредственно перед вводимым элементом;
- В «git config --expiry-date gc.reflogexpire» обеспечена обработка параметров времени в виде »2.weeks» по аналогии с обработкой »1k» в »--int» как 1024;
- Имена тегов в «git log --decorate», используемых для аннотирования коммитов, теперь могут быть ограничены подмножеством доступных ref-ссылок, выбранных при помощи опций »--decorate-refs=шаблон» и »--decorate-refs-exclude=шаблон»;
- Устранена проблема, приводившая к крахам при выполнении «git grep», если осуществлена сборка с libpcre2;
- В «git send-email» добавлена проверка наличия sendmail не только в /usr/lib и /usr/sbin, но и в других путях из списка $PATH;
- В команду «git diff» добавлена опция »--anchored» с реализацией варианта алгоритма »--patience», позволяющего задать уникальную строку, используемую в качестве опорной точки;
- Добавлена настройка rebase.abbreviateCommands, при которой «git rebase -i» генерирует список todo с указанием односимвольных аббревиатур имён команд;
- В команде «git svn» обеспечена очистка символов возврата каретки в сообщениях коммитов по аналогии с поведением Subversion;
- Добавлена поддержка URL https:// для http.proxy при использовании свежих версий libcurl;
- Команда «git merge» теперь проверяет наличие настройки merge.verifySignatures и использует её значение, как если бы в командной строке была указана опция '--verify-signatures'.
- Реализации «git bisect» и «git submodule» переписаны на Си;
- Проведена оптимизация кода для поиска кратчайшего уникального префикса имён объектов.
© OpenNet