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

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

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

  • В команду «git repack» добавлены опции »--filter» и »--filter-to», позволяющие выполнить переупаковку репозитория c учётом заданного фильтра объектов, и при необходимости перенести в отдельное место объекты, не удовлетворяющие заданному фильтру. Опции можно использовать для разделения репозитория в соответствии с определёнными критериями (например, для выноса ненужных или слишком больших объектов), сохраняя при этом возможность доступа ко всем частям при помощи частичного клонирования. Например для оставления в репозитории блобов, размером менее 1 МБ, и выносом в отдельный репозиторий остальных крупных объектов, можно выполнить:
       $ git init --bare ../backup.git
       $ git repack -ad --filter='blob:limit=1m' \
          --filter-to=../backup.git/objects/pack/pack
    

    Инициализация репозитория при помощи частичного клонирования позволяет работать с неполной копией репозитория, корректно обрабатывая обращения к отсутствующим объектам (при обращении к отсутствующим объектам, они на лету будут загружаться по мере необходимости).

  • Добавлена возможность работы с несколькими pack-файлами с информацией о недостижимых объектах («cruft packs»), на которые в репозитории отсутствуют ссылки (не ссылаются ветки или теги). При помощи новой опции «git repack --max-cruft-size» можно определить максимальный размер отдельного pack-файла и добиться разделения базы недостижимых объектов на серию pack-файлов небольшого размера. Использование нескольких мелких pack-файлов вместо одного крупного позволяет значительно сократить операции ввода/вывода при переупаковке репозиториев с большим числом недостижимых объектов, так как для каждой операции переупаковки не нужно будет перезаписывать все данные.

  • Добавлено распознавание попыток выполнения двойной отмены коммита через «git revert» и учёт этого факта при формировании сообщения об отмене (при повторном «git revert» вместо «Revert: Revert: fix bug» будет записано «Reapply fix bug», а если откатить изменение третий раз — «Revert Reapply fix bug»).
       $ git revert --no-edit HEAD >/dev/null
       $ git revert --no-edit HEAD >/dev/null
       $ git log --oneline
       a300922 (HEAD -> main) Reapply "fix bug"
       0050730 Revert "fix bug"
       b290810 fix bug
    
  • Разрешено совместное использование опций »--rfc» и »--subject-prefix». Например, для формирования письма с префиксом »[RFC PATCH bpf-next]» в теме сообщения можно указать:
      $ git format-patch --subject-prefix="PATCH bpf-next" --rfc
    
  • В команде «git log» разрешено указание заполнителя »%(decorate)» для показа имён связанных веток при определении формата при помощи опции »--format», например:
       $ git log --format='%cr%(decorate) (%h) %s'
       3 days ago (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: minor wording fixes in 2.43.0 release notes
       7 days ago (tag: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1
       7 days ago (8ed4eb7538) Merge branch 'tb/rev-list-unpacked-fix'
    
  • В «git for-each-ref» и похожие команды добавлена возможность применения правил .mailmap к заданным через опцию »--format» спецификаторам формата, таким как »%(authorname)» и »%(committeremail)».



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

© OpenNet