Выпуск системы управления исходными текстами 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» в командной строке.



Источник: http://www.opennet.ru/opennews/art.shtml? num=60659

© OpenNet