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

Комментарии

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