Синхронизация изменений из дочернего ртутного репозитория, созданного с помощью 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
,