Доступен релиз распределенной системы управления исходными текстами Git 2.1.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.
Основные изменения:
- Изменение, нарушающее совместимость: значение по умолчанию для переменной окружения LESS изменено с "FRSX" на "FRX". В частности, убран флаг "S", который указывал на необходимость отрезания хвоста невлезающих длинных строк. Отныне длинные строки будут переноситься на следующую строку. Для возврата старого поведения можно запустить 'git config core.pager "less -S"' или только для команды "git blame" - 'git config pager.blame "less -S"';
- Добавлена команда "git verify-commit" для проверки цифровой подписи GPG в подписанных коммитах по аналогии с использованием "git verify-tag" для подписанных тегов;
- Добавлена экспериментальная поддержка нового формата индексов, в котором используется два файла - один с базовыми данными, а другой с инкрементальными изменениями относительно базового файла. Использование данного формата может сократить операции ввода/вывода при перезаписи очень больших индексов на системах с небольшой активностью изменений в рабочем дереве;
- Активирована по умолчанию настройка "core.preloadindex", включающая поддержку предварительной загрузки индекса, что позволяет ускорить работу на системах с многоядерными CPU;
- При клонировании репозитория с локального диска при помощи команды "git clone" теперь используется копирование с применением жестких ссылок. Для отмены данного поведения следует использовать опцию "--no-local";
- В команду git commit --date={date}" добавлена поддержка дополнительных форматов задания времени, в том числе "--date=now";
- Из contrib/ исключено несколько вышедших из употребления директорий;
- Код для вычисления ширины экрана при выводе строк UTF-8 обновлён для соответствия спецификации Unicode 7.0;
- Для клиентов, использующих транспорт на основе HTTP, обеспечена более полная трансляция сообщений об ошибках, передаваемых web-сервером;
- В скрипте автодополнения ввода для bash (из contrib/) улучшена поддержка алиасов, определяющих сложные последовательности команд;
- Добавлена настройка "core.commentChar", через которую для редактора сообщений коммитов можно задать символ начала комментария, отличный от "#". Для автоматического определения символа комментария можно указать параметр "auto";
- В команду "git format-patch" добавлена опция "--signature-file=файл" для добавления подписи к письму из указанного файла;
- В "git grep" добавлена настройка grep.fullname, принудительно включающая использование полного имени файла ("--full-name")
- В "git imap-send" добавлена возможность обращения к обработчику запроса параметров входа для получения данных аутентификации;
- В "git log" и похожих командах обеспечена поддержка значения "auto" для автоматического включения опции "--decorate" при выводе на терминал;
- Запуск "git merge" без аргументов теперь приведёт к выводу ошибки, за исключением явного определения upstream для текущей ветки или активации опции merge.defaultToUpstream;
- В "git mergetool" добавлена поддержка бэкенда vimdiff3;
- По умолчанию отключена настройка mergetool.prompt, при которой всегда выводился запрос подтверждения о запуске утилиты tergetool в текущем пути;
- В "git replace" добавлена субкоманда "--edit" для создания замены через редактирование существующего объекта;
- В "git replace" добавлена субкоманда "--graft" для перезаписи родителя текущего коммита;
- В "git send-email" добавлены опции "--to-cover" и "--cc-cover" для получения содержимого заголовков "To": и "Cc:" из указанных далее файлов;
- При редактировании сообщения для тега через "git tag" обеспечено отображение тега в комментарии;
- Лимит "core.deltabasecachelimit" увеличен с 16 до 96 MiB;
- Проведена значительная оптимизация работы команды "git blame" за счёт реорганизации структур по отслеживанию выполнения работы;
- Оптимизирована работа "git diff при сравнении трёх и более деревьев.