Выпуск распределенной системы управления исходными текстами 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";
- Обеспечена возможность параллельного чтения индексных файлов для повышения производительности. Увеличена эффективность обхода дерева репозитория при извлечении веток и операциях слияния. Внесены оптимизации при частичном клонировании, связанные с кэшированием.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.