Синхронизация изменений из дочернего ртутного репозитория, созданного с помощью hg convert, обратно в его родительский ртутный репозиторий

У меня есть родительский репозиторий А.

Я создал небольшой дочерний репозиторий B родительского репозитория, содержащий небольшой выбранный список подпапок для доступа другой командой с помощью hg-convert

hg convert A B --filemap filemap.txt

где filemap.txt не переименовывает. Он включает или исключает только папки. Такие как:

exclude *
include folder1
include folder2/subfolder1
include folder2/subfolder2
include folder2/subfolder3
exclude folder3_that_was_pulled_in_for_some_reason

Преобразование из A в B работает нормально. Я также могу перезапустить команду hg convert, чтобы "протолкнуть" последующие изменения от А до Б (здесь я использую термин "свободно")

Но что делать, когда я хочу "перенести" изменения с B на A? Запуск hg convert B A без карты файлов воссоздает все коммиты в B обратно в A, поэтому у меня есть множество дублированных коммитов в A.

Есть ли разумный способ синхронизировать А и В в будущем? Может ли быть невозможным, если изменения применяются к A и B в разных порядках?

1 ответ

Решение

Там нет хорошего способа сделать это, поэтому convert не должен быть частью двунаправленного рабочего процесса. Можно использовать convert постепенно, так что вы можете идти от А до Б много раз, но вы не можете перейти от Б к А. Вы можете попытаться hg export патчи от B и hg import их в A, и это, вероятно, будет работать, но когда вы тогда hg convert А в Б снова они удвоятся, и слияние, вероятно, будет трудным.

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

/projectname
    stuff.txt
    /folder1
    /folder3_that_was_pulled_in_for_some_reason
    /projectname-public
        /folder2/subfolder1
        /folder2/subfolder2

когда projectname-public является вложенным репозиторием, то его можно клонировать отдельно, выпускать отдельно, и вы можете легко принимать запросы извлечения, вносить исправления и объединять их.

Подпункты не для начинающих, но они проще, чем круговые convert,

Другие вопросы по тегам