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

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

10 декабря 2018 года

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

Основные новшества:

  • Добавлен новый класс файлов конфигурации, прикрепляемых к разным рабочим веткам в одном репозитории (до этого предоставлялась возможность определения глобальных настроек, привязки к домашнему каталогу пользователя и привязки к репозиторию ($GIT_DIR/config));
  • Добавлен код для обнаружения на стадии выполнения "git clone" ситуаций, когда в репозитории встречаются файлы, пути к которым отличаются только регистром символов (например, path/file.txt и /path/File.Txt). Так как не все файловые системы различают регистр символов при выявлении подобных пересечений теперь выводится предупреждение;
  • Добавлена оптимизация, сокращающая объём вычислений при оценке различий: исключён учёт delta-изменений для объектов из одного ответвления с другими объектами, которые не появляются в том же ответвлённом репозитории;
  • В команду "git format-patch" добавлены опции "--interdiff" и "--range-diff" для отображении в примечании списка различий между текущей и предыдущей версиями;
  • В команду "git mailinfo", которая также используется в "git am", добавлена возможность восстановления патчей, повреждённых из-за изменения расстановки переводов строки при отправке текста почтовыми клиентом в режиме "format=flawed";
  • Приняты более жёсткие правила в отношении "git push" и "git fetch", в случаях когда обновление ссылки приводит к нарушению согласованности, например, при извлечении и обновлении в существующие тэги. Команда "git fetch" теперь запрещает извлечение в существующие теги при вызове без явного указания опции "--force";
  • В команды "git multi-pack-index" и "git fsck" добавлен код для определения повреждений в индексных файлах ".midx";
  • Добавлен индикатор прогресса при генерации файлов с графом коммитов (commit-graph) и выполнении "git status" при обновлении индекса.

Данные операции могут занимать достаточно много времени, что требует информирования пользователя о продолжении работы для исключения видимости зависания;

  • Повышены требования при работе на платформе Windows, в качестве минимальной поддерживаемой версии заявлена Windows Vista;
  • В скрипты автодополенения ввода, поставляемые в contrib/, добавлена поддержка дополнения опций команды "git stash list". Дополнение для команды "git fetch --multiple" ограничено только именами с внешних хостов;
  • Подсказки, выводимые при помощи команд "git help -a" и "git help -av", разделены и сделаны более понятными новичкам. Вторая команда отличается тем, что кроме подробной информации о команде выводится список альтернативных имён и внешних команд;
  • В команду "git grep" добавлена опция "git grep --recursive", отражающая поведение по умолчанию (обход всего дерева). Команда

"git grep --no-recursive" может рассматриваться как аналог выставления настройки max-depth в значение 0;

  • При отправке push-запроса к репозиторию, в котором используется альтернативное внешнее хранилище для хранения объектов, удалённый обработчик "git receive-pack" передаёт список используемых ссылок на внешнее хранилище для сокращения объёма передаваемых объектов. В случае очень большого числа подобных ссылок экономия трафика за счёт сокращения числа передаваемых объектов сводится на нет из-за необходимости передачи списка очень большого размера. В новой версии добавлены настройки для управления выдачей информации об альтернативных ссылках;
  • Команда "git cmd --help" в случае, если "cmd" является псевдонимом другой команды, теперь не только выводит ссылку на основную команду, но и сразу выводит подсказку для этой команды;
  • Улучшена работа команды "git p4 unshelve";
  • В команде "rev-list --filter" добавлена поддержка фильтра "tree:0" для исключения всех деревьев;
  • В команде "git send-email" реализовано выявление строк с адресами из всех подписей, заканчивающихся на "-by". Для отключения нового поведения добавлена опция "--suppress-cc=misc-by" и настройка "sendemail.suppresscc = misc-by";
  • Модернизирована логика выбора имени пользователя и email на платформе Windows;
  • В "git mergetool" добавлена опция "--[no-]gui", работающая по аналогии с "git difftool";
  • В команду "git rebase -i" добавлена поддержка ключа 'break', который можно добавлять в списки to-do для индикации конца списка до его фактического завершения;
  • Для опции "--pretty=format:" предложены новые заполнители "%GF" и "%GP", показывающие слепки ключей GPG;
  • Для платформ со свежими версиями библиотеки cURL добавлена настройка http.sslBackend, позволяющая выбрать различные бэкенды для обработки защищённых HTTPS-соединений. В Windows данная настройка позволяет

переключиться между использованием OpenSSL и Secure Channel;

  • В команду "git send-email" добавлена опция "--smtp-auth=none" для отключения SMTP-аутентификации, даже если в настройках задано имя пользователя для SMTP;
  • Маска '**', указанная без слеша с одной из сторон, которая ранее считалась некорректной, теперь воспринимается как маска для определения наличия двух символов звёздочка;
  • Реализации команд "git submodule update", "git rebase" и "git rebase -i" полностью переписаны на языке Си. Проведена чистка кода, используемого для команд "git status" и "git commit --dry-run";
  • Обеспечена возможность параллельного чтения индексных файлов для повышения производительности. Увеличена эффективность обхода дерева репозитория при извлечении веток и операциях слияния. Внесены оптимизации при частичном клонировании, связанные с кэшированием.

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


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

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

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