После трёх месяцев разработки опубликован выпуск распределенной системы управления исходными текстами Git 2.32. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям “задним числом” используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.
По сравнению с прошлым выпуском в новую версию принято 617 изменений, подготовленных при участии 100 разработчиков, из которых 35 впервые приняли участие в разработке. Основные новшества:
- В команду “git commit” добавлена опция “–trailer [=]”, которая позволяет упростить прикрепление к коммиту собственной структурированной информации (trailer) в формате ключ/значение, которую можно затем обработать командой “interpret-trailers”.
- Вместо механизма GIT_CONFIG_NOSYSTEM, применяемого для предотвращения чтения из общего для всей системы файла конфигурации, предложено использовать механизм GIT_CONFIG_SYSTEM, позволяющий явно указать из какого файла следует загружать общесистемные настройки, а также параметр GIT_CONFIG_GLOBAL для переопределение привязанных к отдельным пользователям настроек в $HOME/.gitconfig. Присвоение переменной GIT_CONFIG_SYSTEM пустого значение меняет поведение на эквивалентное GIT_CONFIG_NOSYSTEM.
- При использовании второй версии коммуникационного протокола Git при выполнении “git push” реализовано определение общего предка на принимающей стороне, что позволило довести эффективность работы “git push” до уровня “git fetch” и исключить загрузку объектов, в которых нет необходимости.
- Добавлен простой IPC-интерфейс, позволяющий создавать сервисы, такие как fsmonitor.
- Прекращена обработка файлов “.gitattributes”, “.gitignore” и “.mailmap”, в случае, если они являются символическими ссылками.
- Для транспорта HTTP добавлена поддержка кэширования пароля, успешно использованного для разблокировки сертификата.
- В команде “git stash show” реализована возможность отображения неотслеживаемой части хранилища временно убранных файлов.
- Предложена более продвинутая стратегия переупаковки репозитория командой “git repack”, позволяющая снизить потребление ресурсов при переупаковке.
- В команде “git commit” реализован расширенный вариант опции “–fixup” –
“–fixup=(reword|amend):”, предоставляющий выбор, изменять только сообщение в логе или сообщение и содержимое. - В команде “git send-email” учтена установка настройки core.hooksPath.
- В “git format-patch -v” разрешено использование счётчиков, не являющихся целым числом.
- В “git clone” добавлена опция “–reject-shallow”, позволяющая запретить клонирование из репозиториев в режиме shallow (без полной истории изменений).
- В программе “gitweb” добавлен режим скрытия email, заменяющий похожие на email строки при выводе.
- Изменена логика обработки команды “git apply –3way”, которая теперь вначале пытается применить алгоритм трёхстороннего слияния и только в случае сбоя или возникновении конфликта откатывается на обычное применение патча (раньше было наоборот).
- В команде “git apply” разрешено одновременное указание опций “–3way” и “–cached”.
- В Userdiff добавлены шаблоны для языка “Scheme”.
- В команду “git log” добавлена опция “–diff-merges=