Представлен (https://lkml.org/lkml/2016/9/2/694) выпуск распределенной системы управления исходными текстами Git 2.10.0 (http://git-scm.com/). Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux (https://git.kernel.org/cgit/linux/kernel/git/stable/linux-st.../), Android (https://android.googlesource.com/), LibreOffice (http://cgit.freedesktop.org/libreoffice), Systemd (http://cgit.freedesktop.org/systemd), X.Org (http://cgit.freedesktop.org/xorg), Wayland (http://cgit.freedesktop.org/wayland), Mesa (http://cgit.freedesktop.org/mesa/), GStreamer (http://cgit.freedesktop.org/gstreamer), Wine (http://source.winehq.org/git/wine.git), Debian (http://anonscm.debian.org/gitweb), DragonFly BSD (http://gitweb.dragonflybsd.org/?p=dragonfly.git;a=summary), Perl (http://perl5.git.perl.org/perl.git), Eclipse (http://git.eclipse.org), GNOME (http://git.gnome.org/browse/), KDE (https://projects.kde.org/projects), Qt (https://code.qt.io/cgit/), Ruby on Rails (https://github.com/rails/rails), PostgreSQL (http://git.postgresql.org/gitweb/), VideoLAN (http://git.videolan.org), PHP (http://git.php.net/), Xen (http://xenbits.xen.org/gitweb/), Minix (http://git.minix3.org/).
По сравнению с прошлым выпуском в новую версию принято 639 изменений, подготовленных при участии 76 разработчиков, из которых 22 впервые приняли своё участие в разработке. Основные (https://github.com/git/git/blob/v2.10.0/Documentation/RelNot...) изменения (https://github.com/blog/2242-git-2-10-has-been-released):
- В "git push" добавлена индикация прогресса выполнения длительных операций, не связанных с загрузкой по сети и выполняемых на стороне сервера, таких как определение delta-отличий, сжатие и запись объектов. Индикация позволяет точно видеть какое действие производится в данный момент и определить связана задержка с проблемами или с выполнением локальных ресурсоёмких операций. Ранее прогресс отображался только для процесса загрузки по сети, после чего git замирал (для больших репозиториев ожидание могло составлять минуты), что вводило в замешательство и вызывало ощущение зависания;
- Отображение прогресса также значительно улучшено для "git clone" и теперь детально информирует пользователя о действиях с полученными объектами. При отображении прогресса локальные и удалённые операции теперь явно выделены;
- В "git daemon" по умолчанию для всех сокетов включён флаг SO_KEEPALIVE, что позволяет выявлять оборванные соединения не дожидаясь таймаута (при запуске "git daemon" без опции --[init-]timeout соединения могли долго оставаться активными после обрыва связи клиента);
- Улучшен процесс проверки по цифровой подписи. Несмотря на то, что использование подписанных через GPG тегов и коммитов поддерживается уже очень давно, сам процесс работы с такими подписями оставляет желать лучшего. В новой версии добавлена опция log.showSignature, включающая отображение слепков цифровых подписей для каждого вызова "git log" (отключается через опцию "--no-show-signature"). Формат вывода сигнатур переведён на показ 64-разрядных слепков ключей, так как 32-разрядные слепки уже не подходят для идентификации из-за большой вероятности коллизий (например, недавно был найден (https://www.opennet.dev/opennews/art.shtml?num=44973) дубликат короткого идентификатора 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 года).
URL: https://lkml.org/lkml/2016/9/2/694
Новость: http://www.opennet.dev/opennews/art.shtml?num=45073