Выпуск Git 2.4.0

Выпуск Git 2.4.0

Сообщение Sunderland93 » 02 май 2015, 14:46

По сравнению с прошлым выпуском в новую версию принято 426 изменений, подготовленных при участии 76 разработчиков, из которых 25 впервые приняли своё участие в разработке. В новом выпуске представлены в основном исправления ошибок и мелкие улучшения, значительные изменения отсутствуют. Основные изменения:

Поддержка атомарных операций "git push", применение которых активируется опцией "--atomic". Атомарный push полезен при необходимости отправки сразу нескольких веток на внешний сервер. В обычных условиях часть обновлений может пройти нормально, но некоторые обновления могут не пройти, например, когда другой разработчик отправил в тот же репозиторий свою ветку. В этом случае потребуется откорректировать вносимые изменения в соответствие с кодом, который успел отправить другой разработчик.

Опция "--atomic" даёт возможность отправить несколько веток атомарно как единое целое, так что либо все из перечисленных веток будут приняты, либо все отвергнуты. Например: "git push --atomic origin branch1 branch2". Подобное поведение особенно востребовано в автоматизированных системах непрерывной интеграции - после добавления очередной порции изменений, если проверка прошла успешно, прошедшая тестирование ветка с изменениями переливается в ветку master, создаётся новый тег и примечание к коммиту. Все эти три шага теперь можно выполнить атомарно с гарантией того, что все они будут выполнены: "git push --atomic origin master refs/tags/release-17 refs/notes/test-results".
Улучшены средства развёртывания кода командой push (Push-to-deploy), которые часто применяются web-разработчиками для размещения новой версии своего проекта на сервере.
Реализован перехватывающий вызов push-to-checkout, который может быть установлен на сервере для задания собственного поведения в ситуации выполнения операции push для ветки после checked-out. По умолчанию если на сервере в рабочем дереве уже были изменения при выполнении подобной push-операции выводится ошибка. Установка своего обработчика позволяет попытаться выполнить слияние нового содержимого ветки с другими редакциями ветки на стороне сервера или принудительно заменить локальные изменения изначальным содержимым ветки.
Реализована возможность выполнения Push-to-deploy для только что инициализированного пустого репозитория на сервере, на котором ещё не было коммитов (в обычных условиях операция push в пустой репозиторий не работала корректно).
Релизация инвертированного поиска по логам. Для фильтрации вывода команды "git log" доступны такие команды, как "--grep", "--author", "--committer", "--grep-reflog", которые позволяют достаточно точно отсеять соответствующие маске записи в логе коммитов. Новая опция "--invert-grep" позволяет вывести только то, то не попало под заданную маску. Например, для вывода записей в которых отсутствует аннотация "Fixes": "git log --all --merges --invert-grep --grep=Fixes";
В команде "git log" пока нет возможности комбинировании опций выборки по маске в произвольные выражения, например, "соответствует А и Б, но не В". Но благодаря опции "--invert-grep" подобные выражения теперь можно симулировать через конвейерную обработку результатов нескольких команд "git log". Например, если нужно найти не приведшие к слияниям коммиты в ветке master, выполненные Иваном Ивановым, для которых не указаны строки "Signed-off-by":


Код: выделить все
 git rev-list --no-merges --author="Junio C Hamano" master |
 git log --stdin --no-walk --invert-grep --grep='^Signed-off-by:'


Чтобы дополнительно исключить из вывода отменённые коммиты и посчитать сколько коммитов осталось:


Код: выделить все
 $ git rev-list --no-merges --author="Junio C Hamano" master |
 git rev-list --stdin --no-walk --invert-grep --grep='^Signed-off-by:' |
 git rev-list --stdin --no-walk --invert-grep --grep='^Revert ' |
 wc -l


В команду "git status" добавлена возможность указания опции "--verbose" дважды. В этой ситуации будут показаны данные не только по коммитам, но и по изменениям, ожидающим коммита;
Команда "git log --decorate", при которой помимо обычных данных из лога показываются связанные с ними имена веток, теперь выводит информацию не только о текущей ветке HEAD, но о том, на какую ветку она ссылается (HEAD -> master);
Новый параметр конфигурации push.followTags, включающие по умолчанию применение опции "--follow-tags" в команде "git push";
В транспорте на базе HTTP при запросах реализована отправка заголовка Accept-Language, что позволяет организовать вывод сообщений сервера на языке, отличном от английского.

Источник
Sunderland93
 
Стаж: 47 лет 8 месяцев 21 день

Выпуск Git 2.4.0

Спонсор

Спонсор
 

Вернуться в Новости из мира Linux

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1