Представлен (https://lkml.org/lkml/2014/11/26/674) релиз распределенной системы управления исходными текстами Git 2.2.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 (http://qt.gitorious.org/), 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/).
По сравнению с прошлым выпуском в новую версию принято более 550 изменений, подготовленных при участии 77 разработчиков, из которых 20 впервые приняли своё участие в разработке. Основные изменения:
- В "fast-export" добавлена опция "--anonymize", позволяющая при экспорте заменить содержимое произвольных блобов, имён разработчиков, путей и записей в логе на строки-заглушки. Подобное необходимо когда требуется сообщить об ошибке, но присутствуют ограничения по раскрытию некоторого содержимого в публичном репозиторий;
- В команду "git push" добавлена опция "--signed", позволяющая выполнить push-обновление на сервер, не заслуживающий доверия, с использованием цифровой подписи для последующего аудита и проверки привязки веток в публичном репозитории к необходимым коммитам;
- В "git archive" добавлена возможность фильтрации попадающего в архив содержимого по файловому пути (pathspec);
- В случае отсутствия привязанного к пользователю файла конфигурации (core.user) выполнение "git config --edit --global" отныне приведёт к выводу в редакторе базового шаблона конфигурации, а не пустого экрана;
- При выполнении команды "git stash list -p" теперь отображаются отличия основной версии коммита и версии из рабочего дерева по аналогии с "git stash show";
- В "git difftool" добавлена опция для отключения передачи путей в diff-бэкенд, если он завершил своё выполнение с ненулевым кодом возврата;
- В "log --date=iso" использован компактный вариант формата ISO 8601, который более удобен для восприятия человеком. Для полного следования требованиям стандарта вывода даты добавлена опция "--date=iso-strict";
- В логике работы "git prune" учтены различные пограничные ситуации;
- Добавлена защита от использования неоднозначных индексов, создаваемых некорректными реализациями Git, в которых для одного пути содержатся записи для нескольких стадий;
- Изменено наименование создаваемых при выполнении команды "git mergetool" временных файлов, для того чтобы избежать слишком большого числа точек в именах (вместо наименования "hello.BASE.4321.c" теперь используется "hello_BASE_4321.c"). Добавлена возможность размещения подобных временных файлов в отдельной директории, которую можно определить через директиву конфигурации "mergetool.writeToTemp";
- Представлен новый спецификатор "%D", который, в отличие от "%d", выводит имя тега без оформления (при "%d" выводится " (tagname)", а при "%D" просто "tagname");
- Добавлен новый фильтр "git interpret-trailers", позволяющий откорректировать хвост сообщения к коммиту (содержит "Signed-off-by:");
- Добавлена команда "git help everyday", при выполнении которой выводится руководство "Everyday Git in 20 commands or so";
- Сокращено потребление памяти и увеличена эффективность обработки параметров слияния при работы команды "git svn";
- В "git fsck" добавлены дополнительные проверки целостности содержимого объектов, связанных с тегами;
- В "git hash-object" добавлена опция "--literally" для упрощения отладки;
- API для манипуляции ссылками ("refs") реструктуризирован для придания более транзакционного характера и поддержки атомарных обновлений при размещении хранилищ не только в традиционных ФС (наприимер, в СУБД);
- Проведена чистка API для работы с файлами блокировок;
- Добавлена подсистема для кэширования параметров конфигурации, позволяющий избавиться от многократного чтения файлов конфигурации при выполнении некоторых команд.
Дополнительно можно отметить публикацию (https://try.github.io/levels/1/challenges/1) интерактивного руководства, позволяющего за 15 минут легко обрести основные навыки использования Git и взаимодействия с GitHub.
URL: https://lkml.org/lkml/2014/11/26/674
Новость: http://www.opennet.ru/opennews/art.shtml?num=41135