2 февраля представлен выпуск распределенной системы управления исходными текстами Git 2.53.
Git отличается высокой производительностью и предоставляет средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям «задним числом» используются неявное хеширование всей предыдущей истории в каждом коммите, а также удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Код Git распространяется под лицензией GPLv2+.
По сравнению с прошлым выпуском в новую версию принято 466 изменений, подготовленных при участии 70 разработчиков (21 впервые приняли участие в разработке Git). Основные новшества:
- Добавлена возможность применения стратегии упаковки репозиториев
geometric(git repack --geometric) к частично клонированным внешним репозиториям, работающим в режимеpromisor(недостающие объекты догружаются при необходимости). При переупаковке с опций--geometricpack-файлы с расширением.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 намерены включить в число обязательных сборочных зависимостей.





