Выпуск распределенной системы управления исходными текстами 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