Выпуск распределенной системы управления исходными текстами Git 2.9.0
По сравнению с прошлым выпуском в новую версию принято 497 изменения, подготовленных при участии 75 разработчиков, из которых 28 впервые приняли своё участие в разработке. Основные изменения:
- В дополнение к появившейся в прошлом выпуске возможности извлекать субмодули (репозитории, включённые в состав другого репозитория) в несколько параллельных потоков (например, "git fetch --recurse-submodules --jobs=4") в новой версии добавлена возможность использования опции "--jobs" для распараллеливания операций клонирования и обновления субмодулей:
git clone --recurse-submodules --jobs=4 ... git submodule update --jobs=4 ...
Распараллеливание процесса обработки субмодулей также можно включить через установку директивы submodule.fetchJobs в файле конфигурации.
- Добавлены новые возможности для управления поведением клонировния и извлечения субмодулей. Git теперь отражает опции командной строки в командах субмодулей. Например, для одноразовой установки переменной для всех извлечённых субмодулей можно запустить "git -c http.proxy=... clone --recursive";
- Добавлена возможность использования при выполнении "git clone" опции "--shallow-submodules", которая позволяет значительно сократить время клонирования репозиториев с субмодулями;
- В "git diff" добавлена экспериментальная опция "--compaction-heuristic" (diff.compactionHeuristic в файле конфигурации), включающая дополнительную эвристику для корректного отображения логики изменений, в которых фигурируют повторяющиеся блоки. Например, если раньше изменения определялись по первому совпадению:
values.each do |v| + v.prepare + end + + values.each do |v| v.finalize end end
то теперь, на основании наличия пустой строки-разделителя более точно отражается принадлежность изменённых элементов:
def finalize(values) + values.each do |v| + v.prepare + end + values.each do |v| v.finalize end
Кроме того, добавлена настройка interactive.diffFilter, упрощающая установку альтернативных обработчиков вывода различий в "git add -i". Добавлен новый скрипт-фильтр diff-highlight, выделяющий цветом различия сегментов кода. Для установки фильтра можно использовать команду "git config interactive.diffFilter diff-highlight";
module Foo def output - puts "hello, world!" + puts "goodbye, world!" end end
- Команда "git rebase -x" теперь может применяться для тестирования всех коммитов без включения интерактивного режима. В новой версии, если не указать флаг "-i" операция "git rebase -x" будет применена для всех коммитов и завершит выполнение на первом проблемном коммите с выводом сообщения об ошибке. После исправления проблемы предлагается продолжить проверку, запустив команду "git rebase --continue". Подобный подход удобен для быстрой проверки всей серии коммитов в проектах, в которых не принято рецензирование каждого изменения. Например, для тестирования полной ветки можно выполнить:
$ git rebase -x 'make test' Executing: make test Result: OK Executing: make test Result: FAIL make: *** [test] Error 2 Execution failed: make test You can fix the problem, and then run git rebase --continue исправляем ошибку и продолжаем проверку $ make test Result: OK $ git commit -a --amend $ git rebase --continue Executing: make test Result: OK Successfully rebased and updated refs/heads/your-branch.
- Изменён метод поиска тегов по читаемым именам коммитов, выдаваемых командой "git describe". Если раньше при выборе имени в режиме "--contains" использовался ближайший тег, что могло привести к нелогичным результатам при наличии более новых тегов, содержащих коммит, то в новой версии применён более простой для понимания хронологический порядок - используется самый старый тег, содержащий коммит;
- В "git log" обеспечено раскрытие символа табуляции с учётом применяемого при выводе 4-символьного выравнивания, что позволяет корректно отобразить ASCII-рисунки в коммитах;
$ git log commit 8d7fca1d690ff2ffb678dc00fbca1954df5e5b90 Author: Mu-An Chiou
Date: Mon Sep 23 09:21:03 2013 +0900 _____ ╲ ╲ │ │ │ │ ___________________________ └─#──┘ ######## / | ## ##~ ~ ~ ## / | ##### ########## < I have expanded your tabs! | ##### ########## \ | ### #######╱╱####### \___________________________| | / ####╱╱ HUBOT ##\ . \/ ##╱╱########### \ . ╱╱############ | . ############# ### ############# #### ###### #### ### XX ## # - Включён по умолчанию режим определения переименования файлов при анализе различий в "git diff" и "git log". Git не сохраняет информации о переименованиях, но может определять их налету на основе оценки различий между новыми и старыми файлами. Данная возможность присуттвует с первых дней существования git, но только теперь включена по умолчанию;
- Возможность определения собственных путей для скриптов-обработчиков событий (хуков). Если ранее скрипты могли находиться только в директории .git в каждом репозитории, то сечас можно определить единый для всех репозиториев набор типовых скриптов, находящихся в любой части ФС. Для задания пути следует использовать настройку core.hooksPath;
- В утилите git-p4 (импорт и экспорт в Perforce) появилась поддержка сопоставления пользователей p4 и идентификаторов Git, а также записи информации о работах p4 в текст примечаний к коммитам.
- В состав включён скрипт git-multimail 1.3.1 для рассылки уведомлений о выполнении операций push;
- Для защиты от слияний по ошибке при выполнении "git merge" запрещено по умолчанию слияние двух веток, не имеющих общего предка.
Источник: http://www.opennet.ru/opennews/art.shtml?num=44600
|
0 | Tweet | Нравится |
|