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

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

По сравнению с прошлым выпуском в новую версию принято 466 изменений, подготовленных при участии 70 разработчиков (21 впервые приняли участие в разработке Git). Основные новшества:

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

  • В команду «git fast-import» добавлена опция »--signed-commits=strip-if-invalid» для удаления цифровых подписей из импортируемых объектов, ставших некорректными после перезаписи части истории репозитория. До этого можно было либо импортировать, либо удалить все подписи, без разделения на действительные и потерявшие смысл. Опция «strip-if-invalid» позволяет реализовать инструменты для сохранения действующих подписей и переподписывания объектов с потерявшими актуальность подписями.

  • В вывод команды «git repo structure» добавлена информация о размере всех достижимых объектов (reachable) в репозитории с разбивкой по их типам. Информация теперь выводится в читаемом виде с единицами измерения и показывается отдельно для фактического и занимаемого на диске размеров, что позволяет оценить общий размер репозитория на диске.
       $ git repo structure
    
       | Repository structure | Value      |
       | -------------------- | ---------- |
       | * References         |            |
       |   * Count            |   1.78 k   |
       |     * Branches       |      5     |
       |     * Tags           |   1.03 k   |
       |     * Remotes        |    749     |
       |     * Others         |      0     |
       |                      |            |
       | * Reachable objects  |            |
       |   * Count            | 421.37 k   |
       |     * Commits        |  88.03 k   |
       |     * Trees          | 169.95 k   |
       |     * Blobs          | 162.40 k   |
       |     * Tags           |    994     |
       |   * Inflated size    |   7.61 GiB |
       |     * Commits        |  60.95 MiB |
       |     * Trees          |   2.44 GiB |
       |     * Blobs          |   5.11 GiB |
       |     * Tags           | 731.73 KiB |
       |   * Disk size        | 301.50 MiB |
       |     * Commits        |  33.57 MiB |
       |     * Trees          |  77.92 MiB |
       |     * Blobs          | 189.44 MiB |
       |     * Tags           | 578.13 KiB |
    
  • В команду «git maintenance» добавлена подкоманда «is-needed» для выполнения операций обслуживания репозитория только при наличии в этом необходимости.

  • В экспериментальной команде «git replay» по умолчанию реализовано обновление ссылок в транзакции, вместо показа, куда должны указывать ссылки, без обновления.

  • В команду «git blame» добавлена возможность выбора алгоритма оценки отличий при помощи опции »--diff-algorithm=‹algo›».
  • В команду «git repo info» добавлена опция »--all».

  • Из Git-for-Windows перенесена поддержка символических ссылок для платформы Windows.

В состав прошлого выпуска было добавлено предупреждение о включении по умолчанию сборки компонентов на языке Rust в Git 2.53. Тем не менее, фактически в версии Git 2.53 лишь добавлены отдельные улучшения поддержки Rust (возможность сборки без GNU sed), но сборка с Rust при использовании Makefile оставлена по умолчанию отключённой (требует выставления флага WITH_RUST), а при использовании Meson автоматически активируется при наличии компилятора rustc. В версии Git 3.0 инструментарий Rust намерены включить в число обязательных сборочных зависимостей.



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

© OpenNet