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

После трёх месяцев разработки опубликован выпуск распределенной системы управления исходными текстами Git 2.44. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям «задним числом» используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Код Git распространяется под лицензией GPLv2+.

По сравнению с прошлым выпуском в новую версию принято 503 изменения, подготовленных при участии 85 разработчиков, из которых 34 впервые приняли участие в разработке. Основные новшества:

  • Добавлена новая команда «git replay», которая может применяться в качестве альтернативы «git rebase» и использоваться для воссоздания истории на сервере без рабочего дерева (bare-репозиторий, не содержащий рабочего дерева), обработки одновременно нескольких веток, выполнения операции rebase для веток, отличных от извлечённых в данный момент, или просто для ускорения операций слияния.
  • Добавлена поддержка системы непрерывной интеграции GitLab CI.
  • В команды «git add» и «git stash» добавлена поддержка атрибутов путей «:(attr:…)», задаваемых по аналогией с командой «git show». Например «git add ‘:(attr:~binary)'» можно использовать для добавления всех текстовых (не бинарных) файлов в индекс. Дополнительно в новом выпуске предложен атрибут «builtin_objectmode» для фильтрации файловых путей по правам доступа. Например, «git add ‘:(attr:builtin_objectmode=100755)'» можно использовать для добавления всех исполняемых файлов.
  • Добавлена поддержка повторного использования объектов, распределённых по нескольким pack-файлам, для которых присутствует сводный индекс (multi-pack-index) с данными о доступности объектов (оптимизация, позволяющая вместо фактической передачи данных, сослаться на использование данных, уже присутствующих в pack-файлах). Начиная с версии 2.44 git при теперь может обрабатывать повторное использование объектов поверх нескольких pack-файлов, без необходимости переупаковки репозитория в один pack-файл. Для включения новой возможности следует выполнить команды: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap

    после чего число pack-файлов, из которых повторно используются объекты, можно отследить в значении «pack-reused … (from N)», показываемом при выполнении «git push».

  • Команда «git rebase —autosquash» теперь может применяться для операций rebase в неинтерактивном режиме, что позволяет выполнить rebase и быстро применить fixup-исправления без инспектирования списка изменений и не меняя переменную окружения GIT_SEQUENCE_EDITOR.
  • В команду «git merge-file» добавлена опция «—diff-algorithm» для выбора альтернативного алгоритма оценки различий между файлами.
  • В команде «git checkout -B <branch> [<start-point>]» запрещено обновление и извлечение веток, использующих другое рабочее дерево. Для возвращения старого поведения добавлена опция «—ignore-other-worktrees».
  • Добавлена возможность присвоения настройке «git config advice.pushAlreadyExists» значения «true», убирающего при выводе подсказок (hint) инструкцию по их отключению («Disable this message with…»), занимающую место на экране.
  • Оптимизировано выполнение команды «git for-each-ref» с опцией «—no-sort», которая теперь приводит к выводу в неопределённом порядке (ранее при указании «—no-sort» всё равно применялась сортировка по алфавиту). После внесения оптимизаций применение «—no-sort» теперь ускоряет «git for-each-ref» примерно на 20% в репозиториях с большим числом ссылок.
  • В бэкенд управления учётными данными wincred добавлена поддержка обновления токенов OAuth, по аналогии тем как это реализовано в бэкендах credential-cache и credential-libsecret.
  • В «git fetch» добавлена поддержка параметра конфигурации «fetch.all», который будет обработан по аналогии с добавлением опции «—all» в командной строке.

Источник: opennet.ru

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