Представлен (https://lkml.org/lkml/2019/8/16/877) выпуск распределенной системы управления исходными текстами Git 2.23.0 (http://git-scm.com/). Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.
По сравнению с прошлым выпуском в новую версию принято 505 изменений, подготовленных при участии 77 разработчиков, из которых 26 впервые приняли участие в разработке. Основные новшества (https://github.blog/2019-08-16-highlights-from-git-2-23/):
- Представлены экспериментальные команды "git switch" и "git restore", призванные разделить между собой малосвязанные возможности "git checkout", такие как манипуляция веток (переключение и создание) и восстановление файлов в рабочей директории ("git checkout $commit -- $filename") или сразу в staging area ("--staging", не имеет аналога в "git checkout"). Стоит отметить, что, в отличие от "git checkout", "git restore" удаляет неотслеживаемые файлы из восстанавливаемых директорий ("--no-overlay" по умолчанию).
- Добавлена опция "git merge --quit", которая, аналогично "--abort", останавливает процесс слияния веток, но оставляет при этом рабочую директорию нетронутой. Данная опция может оказаться полезной в случае, если некоторые из уже внесённых изменений, внесённых в результате ручного слияния, предпочтительнее оформить в виде отдельного коммита.
- Команды "git clone", "git fetch" и "git push" теперь учитывают наличие коммитов в связанных репозиториях (alternates (https://git-scm.com/docs/gitrepository-layout#Documentation/...));
- Добавлены (https://github.com/git/git/commit/ae3f36dea16e51041c56ba9ed6...) опции "git blame --ignore-rev" и "--ignore-revs-file", позволяющие пропустить коммиты, в которых внесены незначимые правки (например, исправления форматирования);
- Добавлена опция "git cherry-pick --skip" для пропуска конфликтного коммита (запоминаемый аналог последовательности "git reset && git cherry-pick --continue");
- Добавлена настройка status.aheadBehind, фиксирующая опцию "git status --[no-]ahead-behind" на постоянной основе;
- С данного выпуска "git log" по умолчанию учитывает изменения, внесённые mailmap, аналогично тому, как это уже происходит в git shortlog;
- Существенно ускорена операция обновления представленного в 2.18 экспериментального кеша графа коммитов (core.commitGraph). Также ускорен git for-each-ref в случае использования нескольких шаблонов и сокращено количество вызовов auto-gc в "git fetch --multiple";
- "git branch --list" теперь всегда показывает detached HEAD в самом начале списка независимо от локали.
URL: https://github.blog/2019-08-16-highlights-from-git-2-23/
Новость: https://www.opennet.ru/opennews/art.shtml?num=51300