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

Материал из Викиновостей, свободного источника новостей

22 июня 2018 года

Подготовлен выпуск распределенной системы управления исходными текстами Git 2.18.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. По сравнению с прошлым выпуском в новую версию принято 903 изменения, подготовленных при участии 80 разработчиков, из которых 24 впервые приняли своё участие в разработке.

Наиболее важным нововведением Git 2.18 является интеграция поддержки второй версии коммуникационного протокола Git, который используется при удалённом подключении клиента к Git-серверу. Вторая версия протокола примечательна предоставлением возможности фильтрации веток и тегов на стороне сервера (ранее при выполнении любой команды извлечения клиенту всегда отправлялся полный список ссылок во всём репозитории, даже когда клиент обновлял только одну ветку) и добавлением средств для расширения протокола (добавления в протокол новых возможностей по мере появления в инструментарие новой функциональности). Подробнее о второй версии протокола можно прочитать в отдельном анонсе.

Другие изменения:

  • При выполнении слияний и операций "cherry-pick" добавлена эвристика для предугадывания переименований. Например, если x/a, x/b и x/c были переименованы в z/a, z/b и z/c, то наиболее вероятно, что пользователь также переименует x/d в z/d, и можно предложить сразу переместить все остальные элементы каталога 'x' в каталог 'z'. Попутно в коде переименования устранена ошибка, которая могла приводить к перезаписи

не включённых в репозиторий файлов во время слияния;

  • В "git filter-branch" добавлен отдельный код возврата для отделения ситуации отсутствия новых коммитов для перезаписи от ошибок при выполнении операции;
  • При сборке со свежей библиотекой cURL обеспечена возможность использования TLS 1.3 и сжатия методом gzip;
  • В "git gui" добавлено распознавание файлов "~/.ssh/id_ecdsa.pub" и

"~/.ssh/id_ed25519.pub" как SSH-ключей. В дополнение к CTRL/CMD+ENTER для коммита добавлена клавиатурная комбинация CTRL/CMD+KP_ENTER (аналог с нажатием Enter на боковом цифровом блоке клавиатуры). Решены проблемы с использованием старых версий Tk (например 8.5.7)) без поддержки операции "ttk::style theme use" для выбора темы оформления;

  • В "git rebase" добавлена обработка опции "--signoff" при использовании бэкендов, отличных от "am" (но вызванных без "--preserve-merges");
  • Выполнение "git branch --list" во время прерванной операции "rebase -i" теперь разделяет ситуации, когда rebase выполнен для отсоединённой ветки HEAD и обычной ветки;
  • В "git mergetools" обеспечена совместимость с утилитой guiffy;
  • Добавлен новый атрибут "working-tree-encoding", который указывает Git выполнить перекодирование содержимого в соответствии с заданной кодировкой текста при выполнении операции checkout;
  • В "git config" добавлена универсальная опция "--type=typename" для указания типов задаваемых значений, дополняющая раздельные опции

"--int", "--bool" и т.п. В "git config" также добавлен новый тип значений "--type=color" и опция "--default", например, можно указать "git config --get foo.color --default blue" и получить значение цвета из переменной foo.color или вывести цвет "blue" если данная переменная не определена;

  • В "git rebase" добавлена опция "--rebase-merges" для переноса всей топологии графа коммитов;
  • В "git worktree add" добавлена поддержка выполнения операции checkout над существующей веткой;
  • В "git send-email" помимо ранее доступных опций диалога подтверждения ('Yes', 'No', 'Quit', 'All') добавлена кнопка 'Edit' для редактирования перед отправкой;
  • По умолчанию в настройках отключён режим "merge.renames" для экономии ресурсов процессора, которые попусту тратятся на поиск и слияние переименованных путей. В "git status" добавлена настройка status.renames для отключения кода определения переименований;
  • Улучшена работа скрипта автодополнения ввода, в частности, для различных команд обеспечено автодополнение файловых путей;
  • По умолчанию обеспечена поддержка сборки с библиотекой PCRE v2. Для

явного выбора версии PCRE следует использовать опции USE_LIBPCRE1 и USE_LIBPCRE2;

  • Добавлена сборочная опция, позволяющая при запуске Git вызывать все связанные компоненты с использованием относительных путей (ранее данный режим применялся для Windows, но теперь доступен и для Linux, BSD и macOS);
  • Абстрагирован интерфейс взаимодейтсвия с GPG с целью обеспечения в будущем интеграции с другими типами систем формирования цифровых подписей;
  • Обеспечена более заметная подсветка ошибок при выполнении "git push";
  • Проведена оптимизация производительности операций "git fetch", "git gc" и "git pack-objects";
  • Прекращена поддержка операции извлечения коммитов "git http-fetch", которая была помечена устаревшей и никем не использовалась;

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Выпуск распределенной системы управления исходными текстами Git 2.18», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.