Освобождение объекта JavaScript

Я читал о подрепозиториях и о том, как извлечь существующую папку из репозитория Mercurial в подрепозиторий, используя расширение convert и карту файлов. Я могу успешно это сделать. Если у меня следующая структура папок:

C:\Project
---Project\root.txt
---Project\SubFolder
---Project\SubFolder\fileinsubfolder.txt

Я могу создать подхранилище SubFolder. Примерно таким же образом я могу извлечь все остальное в отдельный репозиторий (в этом примере во втором репозитории будет просто файл root.txt). После этого я могу добавить репозиторий SubFolder в качестве вспомогательного репозитория во второй репозиторий. Но хотя оба репозитория имеют полную историю, эти истории не связаны => обновление корневого репозитория до более раннего состояния не переведет подрепозиторий в то состояние, в котором он должен быть на тот момент. Обновление до согласованной более старой ревизии (как корень, так и подрепо обновляются автоматически) будет работать только при обновлении до ревизии, которая уже знает о подрепозитории и имеет файл .hgsubstate.

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

Однако это не работает: когда я забыл файлы в Mercurial, создал новое репо и связал его как подрепо в текущем репо, и я обновляюсь до более старой версии до того, как подрепо существовало, я получаю эту ошибку:

C:\Project>hg update 1
abort: path 'SubFolder\fileinsubfolder.txt' is inside repo 'SubFolder'

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

Есть ли способ в любом случае, чтобы обойти эту ошибку или есть лучший способ переключиться на использование субрепо для определенной папки в существующем репозитории Mercurial и сохранить историю без изменений (и обе истории связаны)?

10
задан Christophe 5 January 2011 в 10:37
поделиться