Версия: | 2.24.0 |
Дата релиза: | 3 ноября 2019 |
Предыдущий релиз: | 2.23.0 от 16 августа 2019 (пресс-релиз) |
Страница: | Git |
Состоялся релиз распределенной системы управления версиями Git 2.24.0. В подготовке релиза приняло 78 участников. Кратко рассмотрим основные изменения.
Макросы для настройки
Обычно настройка какого-либо поведения Git требует изменения конфигурации. Пользователь выбирает одну опцию и указывает ее значение. Простейшие примеры опций — user.name и user.email.
Но что делать, когда пользователь не знает какие опции ему нужно изменить. Например, есть очень большой репозиторий с большим количеством файлов, и возникает необходимость увеличить производительность работы Git.
В Git 2.24 ввели понятие макросов для настроек. Фактически это предустановленные наборы настроек, которые можно включить одной опцией. Постепенно количество удобных и полезных макросов будет увеличиваться.
В нашем примере выше, для повышения производительности работы Git, теперь можно выполнить всего одну команду git config function.manyFiles true, которая на самом деле установит несколько опций (index.version и core.unrackedCache). То есть пользователь использует всего одну команду для выполнения определенной конфигурации.
Эффективное хранение коммитов
В Git 2.19 была анонсирована возможность хранения информации о коммитах более эффективным способом — в виде графа. Если данная функция включена и поддерживается, то графы могут значительно улучшить производительность загрузки/поиска коммитов.
В Git 2.24 графы для хранения коммитов используются по умолчанию. В предыдущих версиях Git для включения данной возможности использовалась экспериментальная опция core.commitGraph. Теперь она прошла тестирование и будет работать по умолчанию.
Новая команда для изменения истории
Добавлена новая команда git filter-repo, которая позволяет вносить изменения в историю репозитория, например, удалить файл из истории.
Новая команда является более простой альтернативой мощной, но относительно сложной в использовании команде git filter-branch
Что еще
- Для команд добавлена новая опция --end-of-options, которая позволяет указать в команде, что после данной опции остальной текст не должен интерпретироваться, как опции. Например, это позволяет выполнить команду git log --end-of-options --super-pingvinus, в которой --super-pingvinus является названием ветки. Данную возможность будет удобно использовать в скриптах.
- Для команды git rebase --rebase-merges добавлены новые опции --strategy и --strategy-option, которые определяют стратегию разрешения слияний.
- Добавлен новый hook (обработчик), который выполняется после завершения слияния, но до записи результирующего коммита. Соответствующий скрипт можно разместить в .git/hooks/pre-merge-commit
- Добавлена поддержка автодополнения для команд с использованием опций конфигурации git -c ...
Комментарии