LINUX.ORG.RU

Git 2.48

 , ,

Git 2.48

0

3

Состоялся выпуск 2.48 распределенной системы управления версиями Git, написанной на языке C и распространяемой по лицензии GNU GPL 2.

Список основных изменений:

  • Новая переменная конфигурации remote.<name>.serverOption оказывает такое же действие, как если бы опция --serverOption=<value> была задана из командной строки.
  • Команда git rebase --rebase-merges теперь использует имена ветвей в качестве меток, когда это возможно.
  • Команды git notes add и git notes append с новым флагом -e открывают заметки в $GIT_EDITOR перед сохранением.
  • Улучшена документация git bundle об использовании --all при создании пакетов.
  • Удалена поддержка старых версий libcURL и Perl.
  • Улучшена работа git mergetool при возникновении ошибки команды.
  • Команды git bundle --unbundle и git clone, выполненные для файла пакета, запускают fsck для новых объектов с настраиваемыми уровнями проверки fck.
  • Если при выполнении git fetch $remote обнаруживается, что отсутствует refs/remotes/$remote/HEAD и на какую ветку указывает другая сторона своим HEAD, refs/remotes/$remote/HEAD обновляется, чтобы указывать на неё.
  • Теперь git fetch учитывает настройки remote.<remote>.followRemoteHEAD для отслеживания HEAD в refs/remotes/<remote>/HEAD.
  • В git range-diff добавлена поддержка опции --diff-merges для сравнения коммитов слияния в сравниваемых диапазонах.
  • Улучшена подсистема reftable.
  • Добавлена поддержка компиляции с более производительными реализациями алгоритма SHA-1 вместо используемого сейчас алгоритма SHA1DC с детектированием коллизий ($ make OPENSSL_SHA1_UNSAFE=1 или $ make BLK_SHA1_UNSAFE=1).
  • Улучшена совместимость cо стандартом C23 и GCC 15.
  • Проведена оптимизация git describe.
  • Добавлена возможность компиляции системой сборки Meson.
  • Другие улучшения и исправления ошибок.

>>> Основные изменения в блоге GitHub

>>> Полный список изменений версии 2.48 на GitHub

★★★★★

Проверено: hobbit ()
Последнее исправление: dataman (всего исправлений: 7)
Ответ на: комментарий от EXL

Практика последних лет и куча дерьмовых скриптов в папках cmake крупных проектов показывает, что разработчикам для сборочной системы нужен нормальный script-like язык, а не обрубыш-DSL вроде CMake на котором скриптовать сценарии сборки сплошная боль.

Ты же противоречишь очевидным фактам. Для 99% проектов и разработчиков нужен компактный, но простой в использовании, освоении и поддержке DSL, а скриптовые расширения нужны в 1% случаев.

Сборочные системы на скриптах… Ну да писались и пишутся. На шелле, на перле, на питоне. Но DSL это уровень выше.

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

а скриптовые расширения нужны в 1% случаев.

Но когда они понадобятся, то вместо того чтобы говнокодить CMake <=> Python мосты, можно просто взять и задействовать их.

Для 99% проектов и разработчиков нужен компактный, но простой в использовании, освоении и поддержке DSL

И CMake здесь явно предлагает не лучший пример такого DSL. Он явно некомпактный (if/endif), непростой (постоянно нужно лазить в доки и гуглить), нелогичный (постоянно нужно ловить mindfuck’и от ожидаемых логичных конструкций), а его поддержка выливается в сущий ад.

Нормальный скриптовый язык вместо CMake-ссанины помогли бы вот этот откровенно-костыльный кал убрать из CMake-скриптов:

https://github.com/libsdl-org/SDL/blob/4294c0683611bc6cca4e0c5c7fe44e69a841dc0b/CMakeLists.txt#L1292-L1303

Где вместо очевидного cflags.replace('-mthumb', '-marm') нагородили какой-то чуши, переложив ответственность на компилятор:

Так как CMake убог и заменить в нём один флаг на другой – боль, мы просто насрём во флаги -marm -mthumb в надежде что у компилятора детерминирован выбор ARM и заглушение Thumb при наличие этих двух флагов.

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

P.S. Сборочная система Android NDK (ndk-build) это умела в лёгкую.

Тут регрессия при переходе ndk-build => CMake случилась, которую разрабы SDL забили таким уродливым костылём.

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

Так и что ты имеешь против Python’а и любого другого нормального скриптового языка в качестве сборочной системы?

Много ты, кстати, знаешь скриптовых языков переживших хотя бы 20ти-летний рубеж? Тот же питон в нынешнем виде версии 3 существует всего лишь с 2008 года. Напомнить каков был переход 2->3? А если бы мы начали раньше? Перл стал популярным и стандартом в каждом дистрибутиве задолго до питона. Чуть раньше он показался бы отличным выбором. А что ты скажешь сегодня про сборочную систему на перловке? А что там было популярно до того, лисп, шелл?

Кстати лисп я бы поддержал больше, он хотя бы стандартизован и его интерпретатор действительно весьма компактен. А где стандарт на питон? Где альтернативные интерпретаторы питона, которые совместимы благодаря стандарту?

Если уж брать какой-то скриптовый язык, то он должен быть во-первых сначала стандартизован. Во-вторых должен быть компактен (как, например, тот же луа). В-третьих иметь стабильную историю подольше, чем у питона. В-четвёртых он должен быть меньше во всех смыслах. Питон тупо слишком большой.

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

Кстати лисп я бы поддержал больше, он хотя бы стандартизован и его интерпретатор действительно весьма компактен. А где стандарт на питон? Где альтернативные интерпретаторы питона, которые совместимы благодаря стандарту?

Да я бы любую технологию поддержал в дефолте/стандарте больше чем CMake, вот буквально любое – Python (Meson, Waf), Lua (premake), Lisp, декларативное подмножество JavaScript (Qbs), сам JavaScript или Typescript и т. д.

Всё то, что позволяет нормально размечать сборочную логику, а не биться головой об ограничения и нелогичности CMake, порождая идиотические велосипеды для очевидных действий. И всё то, что позволяет расширяться без CMake-идиотии по типу «ну наш говённый DSL ограниченный, поэтому делайте find_package(Python3 REQUIRED) (реальная история я не тролль) и вызывайте вашу нормальную логику на Python».

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

https://premake.github.io/docs/Your-First-Script

Premake кстати выглядит максимально адекватно. Очень жаль что «крупный бизнес» выбрал именно CMake. Впрочем, не в первый и не в последний раз выбор IT-индустрии падает на откровенно отсталое, уродское и неказистое решение..

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

Что значит, никому не нужно? Понятно, что каждому конкретному проекту и 1й достаточно. Только вот проектов десятки тысяч, и у каждого своя специфика, свои языки, свои наборы поддерживаемых таргетных платформ, и тд.

В своё время большинство из этих десятков тысяч собиралось с помощью make. И ничего, не жужжали… :)

Стандарт на сборочную систему нужен. Преемственность важна. Никто при этом не запрещает пилить что-то своё нестандартное.

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

Да я бы любую технологию поддержал в дефолте/стандарте больше чем CMake, вот буквально любое – Python (Meson, Waf), Lua (premake), Lisp, декларативное подмножество JavaScript (Qbs), сам JavaScript или Typescript и т. д. Всё то, что позволяет нормально размечать сборочную логику, а не биться головой об ограничения и нелогичности CMake

Я понимаю твою фрустрацию из-за симейка. Меня тоже в нём очень многое не устраивает. Гибкости действительно не хватает, столкнулся когда свои генераторы кода внедрял. До сих пор нормально зависимости не отслеживает… Из того что пробовал, понравился базель, но только как идея, как язык. С практической точки зрения он не пригоден к массовому внедрению.

sena ★★
()
Последнее исправление: sena (всего исправлений: 5)
Ответ на: комментарий от EXL

Ну так Premake не система сборки, а генератор. Как и Гугловская GN для их же Ninja. Кстати, в LLVM экспериментально давно добавили файлы GN, как альтернативу CMake.
И встроенная помощь в GN, пожалуй, одна из лучших в консольных утилитах, без man’ов. Разве что помощь в Fossil не хуже.

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

В своё время большинство из этих десятков тысяч собиралось с помощью make. И ничего, не жужжали… :)

В какое «своё»? Если 30 лет назад, так операционок было меньше и не требовалось пробировать наличие всего и вся. Да и альтернатива была - только автотулзы. Хотя и тогда, Иксы, емнип, собирались каким-то imake чтоль, в общем, чем-то своим. Так как они были максимально кросс-платформенные, и мейк им не подходил уже тогда.

Стандарт на сборочную систему нужен. Преемственность важна. Никто при этом не запрещает пилить что-то своё нестандартное.

Вы сами с собой разговариваете? Стандарт вы уже назвали - это мейк. Он есть и будет, никуда не отлучался. При этом, каждый пилит что-то своё, нестандартное. Всё как вы и пишете. Кому же вы оппонируете?

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

Я понимаю твою фрустрацию из-за симейка. Меня тоже в нём очень многое не устраивает. Гибкости действительно не хватает, столкнулся когда свои генераторы кода внедрял.

Да. Именно так, фрустрация от того что понимаешь что могли сделать хотя бы нормально. Как говорится «eсть два вида языков программирования: те, которые все ругают и те, которыми никто не пользуется», справедливо оно и для этих DSL. Мне вот в ближайшие месяцы нужно будет написать пару задористых Toolchain-файлов и CMake-модулей для экзотических компиляторов и архитектур (M-CORE, C-SKY), флажки которых не совпадают с GCC/Clang… И я уже предвкушаю сколько говна с лопаты я наемся пытаясь прикрутить ежа к ужу из-за отсутствия должной гибкости в CMake. В прошлый заход с другим экзотическим компилятором CMake постоянно пытался подсунуть мне какие-то захардкоженные GCC-флаги из своих кишок и обходил я это каким-то недокументированным способом. Кто знает, может сейчас это работать уже не будет.

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

А ты помнишь CMake времён 2.6 и 2.8? Был он пригоден тогда к массовому внедрению? Однако внедрили, не поморщились. Это сейчас его более-менее допилили до состояния «можно пользоваться с ощущением тяжести в желудке», а первых итерациях там были «стойкие рвотные позывы».

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

Ну так Premake не система сборки, а генератор

Так и CMake тоже. А QBS вообще гибрид, может и сам собирать.

Сегодня границам между системами сборки и генераторами/метагенераторами довольно размыта. Особенно если учесть что те же Makefiles порождаемые CMake дёргают бинарь cmake внутри себя и т. д.

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

У них, похоже, каждая команда пишет для своих рабочих проектов свою систему сборки – левая и правая рука. :)

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

Так и CMake тоже. А QBS вообще гибрид, может и сам собирать.

И CMake может собирать (хоть и вызовом внешних сборщиков), а Premake - нет, насколько я помню.

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

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

С пул реквестами есть несколько подходов и разные руководители в компаниях имеют разные предпочтения. Обычно переспорить их не получается и именно поэтому у меня возник вопрос о предпочтениях ЛОРовских программистов в этом.

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

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

Я работаю не один, хотя и в небольшой группе. Но мы не используем гитхаб или гитлаб, в которых реализованы пул реквесты. Собственно поэтому и возник вопрос, я подумал может быть это уже существует в самом гите. Погуглил немного, вроде нет, это к гиту не имеет отношения.

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

Я так тоже работал однажды и помню как несколько раз кто-то в команде приводил репозиторий к трудноустранимым проблемам.

Чистый git таки поддерживает пул реквесты, хотя и не такие, как в github/gitlab/etc. Почитай выхлоп man git-request-pull

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

А ты помнишь CMake времён 2.6 и 2.8? Был он пригоден тогда к массовому внедрению? Однако внедрили, не поморщились

Но энтузиазм-то был тогда какой! Как его встретили отлично! Не припомню чтобы кто-то сильно плевался. Мы тогда переползали с tmake (предтеча qmake на перле).

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

Чистый git таки поддерживает пул реквесты, хотя и не такие, как в github/gitlab/etc. Почитай выхлоп man git-request-pull

Почитал. Не знал что такая команда вообще есть, но в итоге-то всё равно надо делать слияние бранча с помощью всё той же команды git merge <ветка>. git-request-pull просто формирует удобный отчёт об изменениях для проверки.

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

Всегда надо делать слияние. В централизованных решениях вроде github это всего лишь автоматизировано. Мой вопрос был как раз таки про слиение, то есть как именно его делать.

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

Так и что ты имеешь против Python’а и любого другого нормального скриптового языка в качестве сборочной системы?

Напомню что meson.build пишутся не на Питоне, а на своём DSL языке, немного напоминающем Питон. Язык намерено сделан не Тьюринг-полным, там нет циклов и объявлений функций. Кодогенераторы и т.п. надо писать отдельно от Meson на других языках.

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

А откуда дровишки? Я вот погуглил статистику - не нашёл. < Может ты какую-то видел?

Стопэ… так я не один, выходит, пропустил, что гит в этом релизе на мезон как раз и перешёл? Только сейчас заметил, что люди спрашивают «да где этот ваш мезон используется и кому он вообще нужен» в топике про то (в частности), что гит на него и перевели!

anonmyous ★★
()
Ответ на: комментарий от anonmyous
In this release, the Git project has support for a new build
system, Meson, as an alternative to building with GNU Make.
While support for Meson is not yet as robust as building with
Make, Meson does offer a handful of advantages over Make. Meson
is easier to use than Make, making the project more accessible
to newcomers or contributors who don’t have significant
experience working with Make. Meson also has extensive IDE
support, and supports out-of-tree and cross-platform builds,
which are both significant assets to the Git project.
anonmyous ★★
()
Ответ на: комментарий от anonmyous

гит в этом релизе на мезон как раз и перешёл

Добавлена возможность компиляции системой сборки Meson.

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

Но и добавлено обоснование, что он круче мейка. А это, в общем то, почти равносильно тому, что перешёл, и что мейк начнёт там постепенно загнивать.

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

Всегда надо делать слияние. В централизованных решениях вроде github это всего лишь автоматизировано. Мой вопрос был как раз таки про слиение, то есть как именно его делать.

Тогда мой вопрос остаётся в силе, к какому пункту в твоём списке относится слияние с помощью git merge «ветка»? fast-forward merge?

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

Напомню что meson.build пишутся не на Питоне, а на своём DSL языке, немного напоминающем Питон. Язык намерено сделан не Тьюринг-полным, там нет циклов и объявлений функций. Кодогенераторы и т.п. надо писать отдельно от Meson на других языках.

И это правильно! Но тогда эта портянка из этого поста от @Lrrr это не мезон, а просто питон скрипт?

Ну тогда переписать мезон на сях или плюсах не будет проблемой.

sena ★★
()
Последнее исправление: sena (всего исправлений: 4)
Ответ на: комментарий от anonmyous

Ты конечно можешь считать как хочешь, но я спрашивал совсем про другое.

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

Меня только «import mesonlib» смущает. Это ещё зачем?

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

И это правильно! Но тогда эта портянка из этого поста от @Lrrr это не мезон, а просто питон скрипт?

Это были исходники самого месона, вообще-то. Естественно что они на питоне. И выглядят они так себе. Например, грепнул по isinstance - 1595 вхождений. То есть, они послали полиморфизм нафиг, и везде пишут «если объект такого-то класса, то делаем это, а если сякого - то вот это». Код там крайне тяжело читать и править.

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

Это были исходники самого месона, вообще-то.

А, понял теперь что имел в виду @Lrrr. Но там же в заголовке стоит

‘‘‘This module provides helper functions for Gnome/GLib related functionality such as gobject-introspection, gresources and gtk-doc’’’

То есть они в мезон вкорячили поддержку гнома? Да блин, что это, зачем?? Это как в симейк вшили поддержку qt, прямо в исходный код.

И выглядят они так себе.

Это ладно. Главная проблема в том что в систему сборки приходится добавлять код в таком количестве и такой запутанности для поддержки внутренностей какой-то библиотеки. Это вообще куда годится?

Не, такие «универсальные» системы сборки не нужны.

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

То есть они в мезон вкорячили поддержку гнома? Да блин, что это, зачем??

Так об этом он вам и твердил. Я лишь повторил сказанное. Вы могли этот же вопрос ему (Lrrr) задать ещё в самом начале. Ответ мне неизвестен. Видимо, предполагается, что где-то в параллельной вселенной все только и собирают модули для gobject-introspection и компилируют доки через gtk-doc, и по этому просто жить не могут без нативной поддержки таковых мезоном.

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

Вообще, у них идеология такова: «Мы не поддерживаем плагины и расширения. Мы не даём вам возможность делать макросы или подключать библиотеки рецептов. Но зато, вы можете закоммитить к нам в гит поддержку своего проекта, чтобы всё было, типа, искаропки». По факту, разумеется, такая привилегия доступна только тем, чей проект называется гном.

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

Так об этом он вам и твердил.

Я не заметил слово мезон в урле, увидел гном и подумал что это исходники гнома, а портянка это код который можно исполнять в мезон-файле. А на деле всё оказалось гораздо хуже…

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

Вообще, у них идеология такова: «Мы не поддерживаем плагины и расширения. Мы не даём вам возможность делать макросы или подключать библиотеки рецептов. Но зато, вы можете закоммитить к нам в гит поддержку своего проекта, чтобы всё было, типа, искаропки». По факту, разумеется, такая привилегия доступна только тем, чей проект называется гном.

Может быть там можно эти модули подключать на лету? Типа таскать такой модуль с проектом вместе? Всё равно ничего хорошего конечно, но хотя бы видимость гибкости.

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

Я не заметил слово мезон в урле, увидел гном и подумал что это исходники гнома, а портянка это код который можно исполнять в мезон-файле.

Аа, ну так я вам компенсирую данное упущение: https://gitlab.gnome.org/GNOME/glib/-/blob/main/meson.build

Это то, что вы просили? Слова «мезон» в урле теперь нет.

Может быть там можно эти модули подключать на лету? Типа таскать такой модуль с проектом вместе?

Я ж вам говорю, нельзя ни модули подключать, ни даже какие-либо пользовательские библиотеки макросов создавать. Вообще ничего подключать нельзя. Вместо этого, их девиз - «всё искаропки, комитьте все расширения в наш гит». Но этот девиз работает только для гнома. Что вам и показал Lrrr

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

Я ж вам говорю, нельзя ни модули подключать, ни даже какие-либо пользовательские библиотеки макросов создавать. Вообще ничего подключать нельзя. Вместо этого, их девиз - «всё искаропки, комитьте все расширения в наш гит». Но этот девиз работает только для гнома. Что вам и показал Lrrr

Тогда вообще не понимаю восторга от мезона. Это же фу.

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

Тогда вообще не понимаю восторга от мезона.

А где вы его видели? Восторга и нет. Пользуемся тем, что дают. Обвешиваем его баш-скриптами. Работать надо, а не восторгаться.

И, кстати, зря вы не посмотрели тот урл, что я кинул. Это же эпично. Чел руками делает за мезона все проверки. То, что в автоконфе делается 1 макросом, тут делается созданием тестовой проги и запуска компилятора в явном виде, чтобы проверить результат. То есть, мезон не помогает, а скорее мешает этому процессу.

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

Тогда мой вопрос остаётся в силе, к какому пункту в твоём списке относится слияние с помощью git merge «ветка»? fast-forward merge?

Зависит от твоих настроек. По умолчанию git merge «ветка» пытается сделать fast-forward, а когда это невозможно делает мерж коммит.

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

Пользуемся тем, что дают.

Есть же cmake, который хотя бы не на питоне. Ну и ещё десяток альтернатив…

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

Да я посмотрел, я думаю это есть configure переписанный на мезоне.

Да, но только те тесты, что в конфигуре вшиты и вызываются 1 макросом, здесь переписаны вручную.

Есть же cmake, который хотя бы не на питоне. Ну и ещё десяток альтернатив…

Да вы хоть понимаете, сколько времени отжерает копание в каждой из этих «альтернатив»? Сразу ведь не поймёшь, надо портануть несколько проектов, чтобы хоть мельком оценить, подходит или нет. В результате, берут то, что развивается, на что все переходят, где много документации и презенташек, и где синтаксис более-менее вменяемый. Ну я ещё xmake копнул - это сразу отпадает, там и смотреть нечего. Но другие-то системы все надо ОСВАИВАТЬ! У вас есть месяца 2 времени на освоение десятка систем сборок? Или проще с мезоном побадаться?

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

Да вы хоть понимаете, сколько времени отжерает копание в каждой из этих «альтернатив»?

Если нет времени, то есть симейк, который на сегодня это «стандарт» де-факто для сей и плюсов, есть ещё автотулзы. Для того чтобы выбрать что-то альтернативное должны быть очень веские основания.

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

Для того чтобы выбрать что-то альтернативное должны быть очень веские основания.

У мезона неплохой синтаксис, много документации и куча хайпа (презенташки на ютубе, новости о том, что очередной гит на него перешёл, и всё в этом роде). Этим они и ловят новичков, типа меня. Конечно, тот факт, что, по определению, нет никаких возможностей расширения (ни самой системы сборки плагинами, ни конкретной пользовательской сборки библиотеками макросов) отпугнул бы более искушённого в этих вопросах человека. Но они так убедительны в своих презенташках, когда говорят «нафига что-либо расширять, у нас всё искароппки», что люди верят. :)

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