[devel] Обновление пакета из upstream на примере pybind11

Denis Medvedev nbr на altlinux.org
Чт Июл 27 12:08:34 MSK 2023


On Thu, 27 Jul 2023 10:58:24 +0300
Nikolai Kostrigin <nickel на basealt.ru> 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
> 
> 
> > Варианта тут как минимум два.
> > 
> > 1. Сделать `git merge v2.11.1` и убедиться, что ничего
> > лишнего в исходниках не появилось (`git diff --stat v2.11.1`
> > не содержит ничего кроме .gear). Минус такого
> > подхода в том, что в истории ветки sisyphus останется
> > куча коммитов из ветки v2.9, которых там
> > "на самом деле нет".
Это лучше. Эти коммиты там в истории есть и посмотрев их можно потом
при желании вытащить. Наличие коммита не предусматривает наличие
изменения в HEAD - он вполне мог быть и откачен далее.
Причем надо не git merge, похоже, делать, а git read-tree  из новой
ветки с сохранением .gear куда-то заранее и потом докоммичивания
сохраненных .gear обратно. Иначе изменения в старой ветке будут "удачно"
замержены если они не вызывают конфликтов, но возможно это не то что вы
хотели.
В истории будет конечно шторм после такого изменения, но это вполне
правильный шторм.

> > 
> > 2. Сделать новую историю с новой ветки, отключив
> > git inheritance check.
Это грозное оружие на последний случай.
> > 
> > Оба варианта имеют свои недостатки и приемущества, и мне
> > кажется мейнтейнер должен сам выбрать, что правильнее
> > в конкретном случае. Я бы по умолчанию предпочитал
> > второй, но думаю это вкусовщина.
> >
> 
> Сейчас стало понятно, что это был не единичный случай.
> Раз уж это вынесено на публичное обсуждение, приглашаю остальных 
> мэнтейнеров высказать свое мнение при желании.
> 



Подробная информация о списке рассылки Devel