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

Состоялся релиз распределенной системы управления исходными текстами Git 2.8.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, Xen, Minix.

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

  • Параллельное извлечение субмодулей из репозитория при выполнении команды «git submodules». Git-репозиторий может включать в себя другие репозитории, оформленные как субмодули, что часто используется для включения в основной проект библиотек и других внешних зависимостей. Основной репозиторий включает информацию о том, какие субмодули включены и какие версии каждого субмодуля используются. Извлечение основного репозитория с больших числом субмодулей (git fetch --recurse-submodules) ранее могло занять много времени, так как субмодули извлекались один за другим. В Git 2.8.0 появилась возможность загружать субмодули в несколько параллельных потоков, число которых определяется через опцию »--jobs» (например, «git fetch --recurse-submodules --jobs=4»).
  • Добавлена настройка user.useconfigonly («git config --global user.useconfigonly true»), позволяющая запретить совершение коммита без предварительно привязанных к репозиторию идентификационных параметров коммитера (имя и email). При первом коммите, если в конфигурации не заданы параметры user.name и user.email, при установке опции user.useconfigonly будет выведена ошибка. Подобное поведение позволяет исключить публикацию коммитов не под тем именем, в условиях когда разработчик использует разные идентификаторы для разных проектов (например, один email используется для внешних открытых проектов, а дугой для рабочих). Часто, при работе с новым репозиторием разработчик забывает установить в настройках имя и email, что приводит к совершению коммита под нежеланными параметрами, определёнными на основе ранее используемых настроек.
  • Добавлена большая порция улучшений, направленных на обеспечение комфортной работы с Git на платформе Windows. Многие git-команды, ранее доступные в виде скриптов, переписаны на языке Си. Из проекта Git for Windows перенесены многие специфичные для Windows исправления. В команды, использующие текстовые файлы в качестве входных данных, добавлена поддержка различных схем перевода строки (LF и CRLF);
  • Предоставлена возможность отключения фильтров clean и smudge при указании в них пустых строк. Отключение фильтров позволяет значительно сократить время клонирования репозитория, использующего внешнее хранилище бинарных объектов Git LFS;
  • Добавлена возможность отследить в каком именно месте был изменён параметр конфигурации (в системных, пользовательских или привязанных к репозиторию настройках). В новом выпуске при выполнении «git config --show-origin» показывается источник изменения.
          $ git config --show-origin user.name      file:/home/me/.gitconfig    Me Myself  
  • Для диагностики проблем с концом строке добавлена новая команда «git ls-files --eol FILENAME»:
          $ git ls-files --eol README.md screenshot.png      i/lf    w/lf    attr/                   README.md      i/-text w/-text attr/                   screenshot.png  
  • В команде «git ls-remote» обеспечен вывод ветки, используемой в удалённом репозитории по умолчанию:
          $ git ls-remote --symref origin HEAD      ref: refs/heads/master  HEAD      db6696f653b917509dac1ac13b922e12773a84ff        HEAD  
  • Прекращена поддержка транспорта «rsync://» при выполнении «git clone», который достаточно давно находится в неработоспособном виде и, судя по отсутствию сообщений о проблемах, невостребован пользователями;
  • Внесены изменения и чистки, призванные избежать возникновения проблем, подобных критической уязвимости CVE-2016–2324, исправленной в выпусках 2.4.11, 2.5.5 и 2.6.6 и 2.7.4.

© OpenNet