[devel] Обновление пакета из upstream на примере pybind11
Ivan Zakharyaschev
imz на altlinux.org
Чт Июл 27 12:18:48 MSK 2023
Здравствуйте!
On Thu, 27 Jul 2023, Nikolai Kostrigin wrote:
> 27.07.2023 06:58, Ivan A. Melnikov пишет:
> > On Thu, Jul 27, 2023 at 04:00:07AM +0300, Vitaly Lipatov wrote:
> > > Может ли кто-нибудь, в идеале — мантейнер пакета pybind11, показать на
> > > примере этого
> > > пакета pybind11, как его обновить до версии v2.11.1 ?
> >
> > Как я понимаю, проблема в том, что у апстрима
> > несколько "стабильных" веток, среди которых
> > v2.9 (из которой пакет собран сейчас)
> > и v2.11 (из которой мы хотим собрать пакет),
> > и эти ветки друг от друга не наследуют. Соответсвенно,
> > нужно переехать с одной апстримной ветки на другую.
> >
> > Я правильно угадал?
> >
> Вполне возможно.
> Правда раньше обновление минорных версий было бесшовным и, когда я столкнулся
> с этим впервые, подумал, что это просто ошибка апстрима (force push)
> и выкрутился так:
>
> https://git.altlinux.org/people/nickel/packages/?p=pybind11.git;a=commit;h=e63fc1ec6ab447b36a9958e456e96d7f7002d5c6
Used "git read-tree -u -m v2.8.1" to get new upstream source tree.
Вариант первого варианта, с техникой, ведущей к более предсказуемому и
понятному варианту, чем копание в конфликтах merge.
Как отмечено, удобно, что в ALT-е своих патчей нет, всё внутри .gear/
(git diff v2.9.2..sisyphus --stat)
Как вариант, я бы на основе тех команд, которые помню, сделал аналогичное:
git switch -C master v2.11.1
git merge -s ours gears/sisyphus -m 'merge -s ours gears/sisyphus'
git restore -W -S -s gears/sisyphus .gear
git commit --amend -m 'merge -s ours gears/sisyphus, restore .gear'
и дальше как обычно.
> > Варианта тут как минимум два.
> >
> > 1. Сделать `git merge v2.11.1` и убедиться, что ничего
> > лишнего в исходниках не появилось (`git diff --stat v2.11.1`
> > не содержит ничего кроме .gear). Минус такого
> > подхода в том, что в истории ветки sisyphus останется
> > куча коммитов из ветки v2.9, которых там
> > "на самом деле нет".
> >
> > 2. Сделать новую историю с новой ветки, отключив
> > git inheritance check.
> >
> > Оба варианта имеют свои недостатки и приемущества, и мне
> > кажется мейнтейнер должен сам выбрать, что правильнее
> > в конкретном случае. Я бы по умолчанию предпочитал
> > второй, но думаю это вкусовщина.
Мне первый вариант больше нравится, т.к. хранит историю пакета в ALT.
> Сейчас стало понятно, что это был не единичный случай.
> Раз уж это вынесено на публичное обсуждение, приглашаю остальных мэнтейнеров
> высказать свое мнение при желании.
--
Best regards,
Ivan
Подробная информация о списке рассылки Devel