Я читал о суб-репозиториях и о том, как извлечь существующую папку из репозитория Mercurial в суб-репозиторий, используя расширение convert и файл-карту. Я могу успешно сделать это. Если у меня следующая структура папок:
C:\Project
---Project\root.txt
---Project\SubFolder
---Project\SubFolder\fileinsubfolder.txt
Я могу создать подкаталог SubFolder. Во многом таким же образом я могу извлечь все остальное в отдельном хранилище (в этом примере во втором хранилище будет просто файл root.txt). После этого я могу добавить хранилище SubFolder в качестве вложенного хранилища ко второму хранилищу. Но хотя у обоих репозиториев есть полная история, эти истории не связаны => обновление корневого репозитория до более раннего состояния не приведет к тому, что под репозиторий будет в том состоянии, в котором он должен быть в этот момент. Обновление до согласованной более старой версии (и root, и subrepo обновляются автоматически) будет работать только при обновлении до версии, которая уже знает о вложенном репозитории и имеет файл .hgsubstate.
И альтернативой, о которой я думал, было просто забыть файлы в SubFolder в текущем репозитории и запустить новый репозиторий в SubFolder и одновременно добавить файл .hgsub. Чего я надеюсь достичь здесь, так это работать с субрепозитором, но у него все еще есть способ обновить более старую ревизию (до разделения субэпоха), поскольку файлы SubFolder все еще находятся в истории текущего репозитория.
Это не работает, хотя: когда я забыл файлы в Mercurial, запустил новый репо и связал его как подпредставление в текущем репо, и я обновляюсь до более ранней версии до того, как подпрет существовал, я получаю эту ошибку: 1008 *
C:\Project>hg update 1
abort: path 'SubFolder\fileinsubfolder.txt' is inside repo 'SubFolder'
Проблема здесь в том, что при обновлении до более ранней ревизии, которая не знала о вложенном отчете, это обновление хочет поместить файлы во вложенную папку. Но этот SubFolder является еще одним репо (имеет каталог .hg), и хотя основное репо не помнит об этом, обновление не хочет помещать файлы в SubFolder, поскольку это репо.
Есть ли способ обойти эту ошибку или есть лучший способ переключиться на использование подпрепарата для определенной папки в существующем репозитории Mercurial и сохранить историю нетронутой (и обе истории связаны)?