Представлен выпуск распределенной системы управления исходными текстами Git 2.10.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.
По сравнению с прошлым выпуском в новую версию принято 639 изменений, подготовленных при участии 76 разработчиков, из которых 22 впервые приняли своё участие в разработке. Основные изменения:
- В "git push" добавлена индикация прогресса выполнения длительных операций, не связанных с загрузкой по сети и выполняемых на стороне сервера, таких как определение delta-отличий, сжатие и запись объектов. Индикация позволяет точно видеть какое действие производится в данный момент и определить связана задержка с проблемами или с выполнением локальных ресурсоёмких операций. Ранее прогресс отображался только для процесса загрузки по сети, после чего git замирал (для больших репозиториев ожидание могло составлять минуты), что вводило в замешательство и вызывало ощущение зависания;
- Отображение прогресса также значительно улучшено для "git clone" и теперь детально информирует пользователя о действиях с полученными объектами. При отображении прогресса локальные и удалённые операции теперь явно выделены;
- В "git daemon" по умолчанию для всех сокетов включён флаг SO_KEEPALIVE, что позволяет выявлять оборванные соединения не дожидаясь таймаута (при запуске "git daemon" без опции --[init-]timeout соединения могли долго оставаться активными после обрыва связи клиента);
- Улучшен процесс проверки по цифровой подписи. Несмотря на то, что использование подписанных через GPG тегов и коммитов поддерживается уже очень давно, сам процесс работы с такими подписями оставляет желать лучшего. В новой версии добавлена опция log.showSignature, включающая отображение слепков цифровых подписей для каждого вызова "git log" (отключается через опцию "--no-show-signature"). Формат вывода сигнатур переведён на показ 64-разрядных слепков ключей, так как 32-разрядные слепки уже не подходят для идентификации из-за большой вероятности коллизий (например, недавно был найден дубликат короткого идентификатора PGP-ключа Линуса Торвальдса). Переработан код обращения к GPG для создания подписи данных в буфере, что позволило повысить надёжность благодаря получению информации об ошибках через status-fd, а не код возврата процесса;
- Расширены настройки цветного вывода в терминале. Кроме управления выбором цвета добавлена возможность применения атрибутов для наклонного и перечёркнутого начертания.
- Добавлена переменная окружения GIT_TRACE_CURL для отладки HTTP-соединений, которая пришла на смену переменной GIT_CURL_VERBOSE, предоставляет возможность сохранить в файл больше деталей о выполняемых HTTP-запросах и автоматически вырезает из дампа все данные, касающиеся аутентификации;
- Протокол smart-http изменён для более активного увеличения окон согласования запросов, что позволяет увеличить производительность при извлечении больших репозиториев по HTTP;
- В команды "submodule update" и "clone --recursive" добавлена возможность выполнения ещё одной попытки в случае возникновения единичного сбоя;
- В коде форматирования дат обеспечено корректное отображения дат после 2100 года (проблема устранена за 84 года до её проявления);
- В "git archive" обеспечена возможность создания файлов tar с расширениями POSIX, позволяющими обрабатывать файлы, размером более 8 Гб и временем создания/модификации/доступа после 2242 года (8-гигасекунд после 1970 года).
|