LINUX.ORG.RU

Git 2.56

 , , , ,


0

2

Представлен релиз распределенной системы управления исходными текстами Git 2.56. Код Git распространяется под лицензией GPLv2+. По сравнению с прошлым выпуском в новую версию принято 748 изменений, подготовленных при участии 104 разработчиков, 39 из которых впервые приняли участие в разработке Git.

Основные новшества (github.blog, gitlab.com/blog, gitlab.com/git-scm):

  • Добавлен режим git add --resolved для разрешения конфликтов при слиянии веток, который проверяет файлы на наличие маркеров конфликта и при выявлении маркера хотя бы в одном файле выдаёт ошибку, не индексирует ни один из файлов и показывает список файлов требующих исправления. В отличие от команды git add --update в новом режиме обрабатываются только файлы, находящиеся в состоянии конфликта, а не связанные с конфликтом изменённые файлы игнорируются, что позволяет безопасно завершать слияние веток, даже если в рабочем каталоге находятся другие незавершённые правки (команда git add --update добавляла в индекс все ранее отслеживаемые изменённые файлы в рабочем каталоге).
  • Значительно ускорена работа с большими репозиториями, за счёт оптимизации алгоритма поиска последних общих коммитов при слиянии веток и сравнении коммитов. В процессе работы теперь учитываются коммиты, принадлежащие исключительно одной из веток, что позволяет остановить сканирование сразу после обнаружения всех возможных общих предков, не тратя время на дальнейший перебор истории изменений. В одном из протестированных репозиториев скорость поиска выросла в среднем в 20 раз, а в другом ускорение достигало 70 раз. При выполнении команды git merge-base --all v4.8 v4.9 в репозитории с ядром Linux количество шагов обхода уменьшилось со 167 тысяч до 3.8 тысяч.
  • Для серверного применения адаптирован режим перепаковки --path-walk, позволяющий создавать более компактные pack-файлы за счёт группировки объектов по их пути в дереве каталогов (например, для репозитория Fluent UI использование --path-walk позволило уменьшить размер pack-файла с 558 МБ до 164 МБ). В новой версии реализована возможность использования режима --path-walk совместно с битовыми картами достижимости («reachability bitmap») и дельта-островами («delta island»), применяемыми git-хостингами для ускорения работы и изоляции форков от основного репозитория.
  • Устранены узкие места, приводившие к избыточным вычислениям в больших репозиториях: убраны лишние проверки состояния файлов при записи в reftable; исключено повторное сканирование списка при каждой вставке нового pack-файла; ускорены операции с reftable, в которых накопилось много записей об удалении; оптимизирована работа git diff при указании ограничений по файловым путям. После внесения оптимизаций работа с reftable при большом числе удалений ускорилась в 65 раз (с 13 секунд до 0.2 секунды), а выполнение проблемной команды git diff в репозитории Chromium с 500000 элементами в индексе стало занимать 0.07 секунд вместо 8 минут.
  • В экспериментальную команду git history, предоставляющую возможности для перезаписи истории изменений, добавлена операция git history drop для удаления выбранного коммита с автоматическим прикреплением его потомков к родительскому коммиту.
  • Добавлена команда git branch --delete-merged 'origin/*' 'topic-*' для безопасного удаления групп локальных веток, изменения из которых уже переданы во внешний репозиторий. Для фильтрации веток и репозиториев допускается использование масок. Для анализа претендентов на удаление, без фактического выполнения операции, можно использовать флаг --dry-run.
  • Добавлена команда git refs create|update|delete|rename, в которой объединены низкоуровневые операции для создания, удаления, переименования и обновления ссылок.
  • В команду git bisect run добавлена опция --reset-when-found=[<where>], которая автоматически возвращает репозиторий в состояние до начала поиска или оставляет активным проблемный коммит, без необходимости отдельного запуска команды git bisect reset.
  • В команду git replay добавлен флаг --linearize для использования плоской топологии слияния, по аналогии с git rebase --no-rebase-merges, но без обращения к рабочему дереву.
  • В команде git log --follow реализовано отслеживание переименования файлов в нелинейной истории изменений, например, при слиянии подветок. Путь к файлу теперь фиксируется отдельно для каждого родительского коммита, что делает результат независимым от порядка обхода истории коммитов.
  • Добавлена возможность применения команды git repack -a --filter=blob:limit=1m --drop-filtered для удаления больших blob-объектов, загруженных на лету («on demand») из внешнего репозитория и не используемых в текущем индексе. При обращении к этим объектам в дальнейшем они будут автоматически повторно загружены.
  • В команде git log --graph для графов с несколькими независимыми корнями реализовано добавление отступов для наглядного отделения несвязанных коммитов.
  • Обеспечено выявление типовых опечаток, таких как указание git push origin/main вместо git push origin main или git branch --set-upstream-to origin main вместо git branch --set-upstream-to=origin/main, и вывод подсказки по использованию корректного варианта.

>>> Источник: OpenNET

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

A description in the release notes for Git 2.55.0 has been retroactively updated to clarify that Rust support is enabled by default, but still optional, and will become mandatory in Git 3.0

Самую главную фишку релиза не указали :-D

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

Самую главную фишку релиза не указали :-D

Нейрослоп уже давно не фишка.

vvb333007
()

Обеспечено выявление типовых опечаток, таких как указание git push origin/main вместо git push origin main или git branch –set-upstream-to origin main вместо git branch –set-upstream-to=origin/main, и вывод подсказки по использованию корректного варианта.

Может просто команды переименовать? :)

vvb333007
()
Ответ на: комментарий от vvb333007

Это идёт в разрез с логикой работы. main и origin/main - разные ветки.

Чисто технически можно так поизвращаться:

git push origin origin/main

т.е. отправь в оригин ветку origin/main

Также как и:

git branch -–set-upstream-to=local_branch

А угадывать, что именно хотел сказать пользователь - всегда плохая затея.

Вроде инструмент создан для программистов, а не секретарш. Даже обидно и от таких вопросов и от таких подсказок.

bbc69
()
Последнее исправление: bbc69 (всего исправлений: 1)

Что это ещё за «исходные тексты»?

yvv1 ★★
()
Ответ на: комментарий от bbc69

С гитом я работаю отправляя вопросы чату жпт (типа, какой набор заклинаний нужен чтьбы сделать то-то). А до этого - гуглу. Документация там настолько эзотерическая, что проще спросить у гугла.

Честно говоря, гит я использую только для гитхаба. А так - SVN.

vvb333007
()
Ответ на: комментарий от vvb333007

Говорил, говорю и буду говорить всегда: гитом пользуетесь каждый день, уделите пару вечеров изучению инструмента. И да, учить надо не по доке, а по учебнику.

Это не Вам лично, а вообще всем.

bbc69
()
Ответ на: комментарий от vvb333007

Документация там настолько эзотерическая, что проще спросить у гугла.

Вот да. Какой-то человеконенавистник его делал, явно.

BydymTydym ★★
()
Ответ на: комментарий от zabbal

Бухти не бухти, а пользоваться всё-равно будешь ;)

Ниче, нам бы ночь простоять, да день продержаться, а там и подмога придет в виде православного кириллического ассемблера…

BydymTydym ★★
()
Ответ на: комментарий от BydymTydym

в виде православного кириллического ассемблера…

Ты это, закусывать-то не забывай - времены нонча непростыя :-D

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

А, фигню написал - не ассемблера, а макроассемблера! Спасибо что вовремя поправил.

BydymTydym ★★
()

По факту — в реальной работе максимум 10 команд все используют. Все остальные с тонной ключей скорее для UI тулзов под капотом. Не представляю кто в реальной жизни использует перепаковку репы или делает поиск бисектом, но с автоматическим возвратом к исходному коммиту.

xentatt
()

В одной комбинации команд

origin/main (ошибка) вместо origin main (правильно)

В другой комбинации команд

origin main (ошибка) вместо origin/main (правильно)

Они там головой поехали?

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Они там головой поехали?

Нет, с головой поехал ты, а у них простые и понятные примеры:

типовых ошибок гит отправить на_сервер/ветка вместо гит отправить на_сервер ветка

типовых ошибок гит ветка установить --удалённый-источник сервер ветка вместо гит ветка установить --удалённый-источник=сервер/ветка

А ловлю таких ошибок и подсказки как правильно они сделали как раз для тебя и таких как ты - тех, кто не понимает разницы между серверами и ветками.

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 1)
Ответ на: комментарий от madcore

что, скоро без раста нельзя будет собрать на каком-нить говнороутере?

Скоро Rust станет де-факто обязательной зависимостью ядра GNU/Linux так что проблема решится сама собой просто благодаря наличию компилятора в каждом говнороутере. Тем более что в недалёком будущем для этого даже отдельный компилятор ставить не потребуется: https://rust-gcc.github.io/2026/09/08/2026-08-monthly-report.html

zabbal ★★★★☆
()
Последнее исправление: zabbal (всего исправлений: 1)
Ответ на: комментарий от vvb333007

А так - SVN

А я для себя по тихому под одеялом пользуюсь Mercurial и TortoiseHg…

Но Git к сожалению хорошо знать вынужден во всех его выкрутасах и режимах

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от LamerOk

Если переводить корректно, то получится:

гит отправить серверная/ветка 

вместо 

гит отправить на_сервер ветка

И

гит ветка установить --удалённый-источник сервер ветка 

вместо 

гит ветка установить --удалённый-источник=серверная/ветка

Тогда сразу становится понятно, почему команды отличаются.

bbc69
()
Ответ на: комментарий от LamerOk

на_сервер/ветка вместо … на_сервер ветка таких как ты - тех, кто не понимает разницы между серверами и ветками.

дайте угадаю.. разница в слеше?

vvb333007
()
Ответ на: комментарий от bbc69

Если переводить корректно

Это не корректно. origin - не прилагательное, а существительное.

LamerOk ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.