Можно ли объединять наборы изменений в ртутных репозиториях в хронологическом порядке? - PullRequest
3 голосов
/ 12 ноября 2010

Я хотел бы повторно использовать код из проекта A в проекте B (оба в отдельных репозиториях), поэтому я хотел бы переместить несколько файлов из исходного репозитория проекта A в общий репозиторий C, который будет использоваться проект B. (зависимости, управляемые Maven и т. д.)

Я могу извлечь только те файлы, которые я хочу переместить из A в их собственный «отфильтрованный» репозиторий F, используя расширение convert и некоторые дополнительные сценарии (чтобы узнать полную историю указанных файлов).

На этом этапе я мог: а) вытащить F в C, объединить и зафиксировать, или б) экспортировать все изменения F как патчи, а затем импортировать их в C Однако оба подхода приводят к хранилищу C, чьи наборы изменений не упорядочены в хронологическом порядке. Я вижу историю F, добавленную к истории C.

Возможно ли объединить два репозитория так, чтобы наборы изменений были упорядочены в хронологическом порядке?

У меня есть сценарии для этого - но до сих пор мне приходилось полностью перестраивать C каждый раз, когда я перемещал другой набор F из A. (Экспортируя все C и F как патчи, создавая новый C, затем импортируя все патчи в хронологическом порядке).

Спасибо!

1 Ответ

0 голосов
/ 12 ноября 2010

Не совсем.Родитель набора изменений встроен в его идентификатор узла (который является криптографическим хешем), поэтому вы не можете переупорядочить фактическое происхождение наборов изменений, не полностью изменив / перестроив их.

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

Так что, если A и B имеют следующие наборы изменений со следующими номерами ревизий (r =) и временем создания (t =):

A: null----[A r=0,t=0]----[C r=1,t=2]----[E r=2,t=4]
B: null----[B r=0,t=1]----[D r=1,t=3]----[F r=2,t=5]

Вы могли бы, осторожно потянув, создать репозиторий, подобный этому:

C: null----[A r=0,t=0]-------------------[C r=2,t=2]-------------------------[E r=4,t=4]
     \
      \-----------------[B r=1,t=1]--------------------[D r=3,t=3]------------------[F r=5,t=5]

Однако это мало что дает, поскольку порядковый номер набора изменений (r выше) не имеет смысла).

В идеале ваш репозиторий B был бы клоном A со всеми его локальными модификациями, существующими только в B. Таким образом, если вы исправите ошибку в A, вы можете потянуть в B и затем объединить, чтобы получить это исправление.Пересадка / переоборудование - это пустая замена.Другой вариант заключается в извлечении общих частей A и B в репозиторий C, которые затем A и B будут использовать в качестве субпозитория Mercurial.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...