Выпуск распределенной системы управления исходными текстами Git 2.2.0

Представлен релиз распределенной системы управления исходными текстами Git 2.2.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.

По сравнению с прошлым выпуском в новую версию принято более 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 для работы с файлами блокировок;
  • Добавлена подсистема для кэширования параметров конфигурации, позволяющий избавиться от многократного чтения файлов конфигурации при выполнении некоторых команд.

Дополнительно можно отметить публикацию интерактивного руководства «Try Git», позволяющего за 15 минут легко обрести основные навыки использования Git и взаимодействия с GitHub.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.