Отношения между родителями и детьми в Mercurial - PullRequest
1 голос
/ 01 апреля 2011

Я новичок в Mercurial (и SCM в целом), и я застрял в обработке отношений родитель-потомок между двумя моими проектами.Один проект является родительским проектом и является подмножеством другого проекта (точнее, другой является надмножеством первого).Я хочу работать над двумя проектами в одном локальном репозитории, как если бы они были одним, но я хочу опубликовать их в двух разных общедоступных репозиториях.

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

Какой самый простой / правильный способ сделать это?

1 Ответ

2 голосов
/ 01 апреля 2011

Я думаю, что если вы поищите ответы «ветки вендора», то обнаружите, что они также охватывают ваш случай.

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

subset:

[A]---[B]----[C]----[D]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]


superset2:

[A]---[B]----[C]----[D]---[G]---[H]

С такими репозиториями любое изменение, которое вы вносите в подмножество , может быть легко hg pull преобразовано в superset1 и / или superset2.Например, если вы добавите новую функцию в подмножество, ваши репозитории теперь могут выглядеть следующим образом:

subset:

[A]---[B]----[C]----[D]---[I]---[J]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]


superset2:

[A]---[B]----[C]----[D]---[G]---[H]

, и после добавления их в суперсет1 и суперсет2 вы получите:

subset:

[A]---[B]----[C]----[D]---[I]---[J]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]
                       \
                        --[I]---[J]

superset2:

[A]---[B]----[C]----[D]---[G]---[H]
                       \
                        --[I]---[J]

и тогда вы просто наберете hg merge в superset1 и superset2, чтобы получить:

subset:

[A]---[B]----[C]----[D]---[I]---[J]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]---[K]
                       \             /
                        --[I]---[J]--

superset2:

[A]---[B]----[C]----[D]---[G]---[H]---[L]
                       \             /
                        --[I]---[J]--

Перемещение изменений из superset1 в superset2 или из любого надмножества в подмножество намного менее чисто, поэтому внесите изменения вподмножество и вытащить / объединить его в суперсеты, и все готово.

...