[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