[devel] как избавиться от git-mv?

Damir Shayhutdinov =?iso-8859-1?q?damir_=CE=C1_altlinux=2Eorg?=
Ср Окт 24 11:11:29 MSD 2007


> >> Наилучшим вариантом представляется хранение дерева исходников в git,
> >> исходя из того, как в апстриме? То есть, если в апстриме в
> >> репозитарии файлы лежат прямо в корне, то так и поступать, положив
> >> спек и гир-рулез туда же (вперемешку),
> > ИМХО лучше котлеты отдельно, а мухи отдельно. То есть репозитарий
> > апстрима в отдельной ветке (upstream), .gear-rules и спек - в ветке
> > master.
>
> Да, всё в разных ветках, я это подразумевал.
А почему тогда возник вопрос про "перемешку"?

> > А мержить upstream можно в мастер со стратегией -s ours, оставляя в
> > master только спек и .gear-rules.
>
> ours - это чтобы спек и рулез не трогались, так?
Нет, это чтобы файлы из upstream не попали в master. Чтобы в master
было только два файла и директория .gear-tags.

> Вопрос ставился немного иначе:
> поскольку в репо надо держать:
> 1. рулес и спек
> 2. апстримную ветку
> 3. патченную ветку, которая будет собираться ,
> то из чего следует исходить для того, чтобы разложить исходники в репо ?
Я не совсем понимаю ваш стиль использования gear.

Мой стиль основывается на том, что в результирующем .src.rpm
сохраняется "замещающая первозданность(ванильность)". То есть можно
заменить тарбол из сгенерированного .src.rpm на тарбол из апстрима и
при этом ничего не изменится.

Чтобы поддерживать такой стиль, я создаю тарбол из апстримной ветки, а
патченную ветку (ветки) кладу в пакет в виде диффа между апстримом и
патченной веткой. (директива diff: в .gear-rules). Если патченных
веток несколько, то и патчей получается несколько. В первую патченную
ветку мержатся изменения апстрима. Во вторую ветку мержится первая
ветка с уже слитыми изменениями апстрима и патчем первой ветки. В
третью ветку - мержится вторая. И т.д.

В результате первый патч получается как дифф между первой веткой и
апстримом. Второй патч - как дифф между второй веткой и первой веткой.
Третий - дифф между третьей и второй и т.д. Накладываются патчи в том
же порядке. При этом патчи даже могут пересекаться, это никак не
сказывается на работе.

Мержить при этом последнюю ветку в master с -s ours или без - не принципиально.

> В корне должны лежать .git, .gear-rules, спек и ... тут как минимум 2
> варианта:
> 1. папка с исходниками
> 2. сами исходники без отдельной папки.
Третий вариант - исходники в других ветках.

> Чем определяется?
Вкусом.

> Моё предположение - тем, как разложено в апстриме.
В случае когда исходники в отдельной ветке - это не принципиально.

> Обоснование: чтобы не делать git-mv при каждом мердже. (что также
> отрицательно скажется на истории)
А зачем вы делаете git-mv?

> Правильно?
Ну может и правильно, для вашей схемы.


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