Выпуск распределенной системы управления исходными текстами Git 2.14.0
Состоялся выпуск распределенной системы управления исходными текстами Git 2.14.0. Git является одной из самых популярных, надежных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, LibreOffice, Systemd, X.Org, Wayland, Mesa, GStreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Python, Xen, Minix.
По сравнению с прошлым выпуском в новую версию принято 727 изменения, подготовленных при участии 66 разработчиков, из которых 18 впервые приняли свое участие в разработке. Основные изменения:
- В команде "git diff" по умолчанию включен улучшенный алгоритм компоновки отступов, включающий дополнительную эвристику для корректного отображения логики изменений, в которых фигурируют повторяющиеся блоки. Для отключения эвристики в настройках следует указать "diff.indentHeuristic=false";
- При обработке Perl-совместимых регулярных выражений добавлена поддержка JIT-компиляции и обеспечена возможность сборки с библиотекой PCRE v2, которая теперь рекомендована для сборки (ранее в git поддерживалась только сборка с библиотекой PCRE v1, сопровождение которой теперь ограничивается исправлением только проблем критического характера). Для сборки с PCRE v2 вместо "USE_LIBPCRE=Yes" следует указать "USE_LIBPCRE2=Yes";
- Добавлена возможность настройки цветов для отображаемых в выводе "git status --short --branch" имен текущей ветки и отслеживаемых внешних веток;
- В команду "git clone" добавлена опция "--no-tags", позволяющая изначально не извлекать все теги и настроить tagopt, чтобы не следовать тегам при последующих выборках;
- В "git archive --format=zip" обеспечена поддержка расширения zip64 для создания архивов, превышающих 4 Гб;
- В "git reset" добавлена опция "--recurse-submodules" для рекурсивного обхода субмодулей;
- В "git diff --submodule=diff" по умолчанию обеспечен рекурсивный обход вложенных субмодулей;
- В "git repack" добавлена опция "--threads=n", заданной через которую число потоков также передается в pack-objects;
- В "git send-email" задействован запуск обработчика sendemail-validate для проверки и при необходимости блокирования сообщений перед их отправкой;
- Улучшено автоопределение путей, указанных при запуске команд вида "git cmdname --options" без их явного отделения от ревизий разделителем '--';
- В "filter-branch" добавлен псевдофильтр "--setup" для определения функций и переменных, которые могут использоваться в других фильтрах;
- В "git send-email" добавлены опции "--batch-size" и "--relogin-delay" для обхода ограничений почтовых серверов, лимитирующих число сообщений, которые можно отправить в рамках одного сеанса;
- В "git pull --rebase --recurse-submodules" обеспечено выполнение операции rebase для ветки во всех привязанных субмодулях;
- По аналогии с "git grep" в "git log" добавлена опция "-P" как синоним "--perl-regexp";
- Добавленный в Git 2.13 код для выявления в Git-репозиториях известных коллизий в хэшах SHA-1 теперь интегрирован в git.git как субмодуль. Для получения данного субмодуля следует клонировать git.git с опцией "--recurse-submodules".