После трёх месяцев разработки опубликован выпуск распределенной системы управления исходными текстами Git 2.40. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям “задним числом” используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.
По сравнению с прошлым выпуском в новую версию принято 472 изменения, подготовленные при участии 88 разработчиков, из которых 30 впервые приняли участие в разработке. Основные новшества:
- В скрипт git-jump добавлена поддержка редактора Emacs, помимо ранее поддерживаемого редактора Vim. Git-jump используется для передачи в текстовый редактор информации о позициях в файле для быстрой навигации и перехода к редактированию кода в определённом месте. Например, git-jump может применяться для переключения в редакторе между строками, полученными в результате разбора конфликтов слияния, оценки различий и выполнения поиска (можно выполнить “git jump grep foo” и затем быстро переключаться между позициями, в которых встречается маска “foo”).
- В “git cat-file” обеспечена поддержка применения опций “-s” и “–batch-check” вместе с “–use-mailmap” для правильного определения размера объекта с учётом замены идентификатора, осуществлённой на основе привязок к email, заданных в файле mailmap (ранее опция “–use-mailmap” влияла только на вывод содержимого, но не учитывала, что старые и заменённые пары имя/email могут иметь разный размер).
- В команду “git check-attr” добавлена опция “–source” для выбора дерева с необходимым файлом “.gitattributes”, который будет использован для определения актуальных атрибутов в условиях наличия в репозитории нескольких файлов “.gitattributes”.
- Реализация команды “git bisect” переписана на языке Си и встроена в основной исполняемый файл git (ранее команда была реализована в форме Shell-скрипта). Кроме того, удалена старая реализация команды “git add –interactive”, написанная на Shell (в git 2.26 был предложен встроенный вариант на Си, но старая реализация на
Shell оставалась доступной и регулировалась настройкой add.interactive.useBuiltin). - В команду “git merge-tree” добавлена опция ‘–merge-base’.
- В сценариях автодополнения ввода в bash реализован режим работы без учёта регистра символов.
- Добавлена возможность переопределения редактора списков для интерактивного режима команды rebase через выставление переменной GIT_SEQUENCE_EDITOR через команду “git var” по аналогии с “git var GIT_EDITOR”.
- В команду “git range-diff” добавлена опция “–abbrev=”.
- В подсистему учётных записей добавлена поддержка паролей с ограниченным сроком действия.