Mercurial CLONE с PULL в репозитории с вложенными репозиториями не создает полностью независимый репозиторий
У меня есть репозиторий оболочки OriginalWithSubrepo с Sub-репозиторием Sub, содержащим кучу реальных файлов.
Когда я клонирую OriginalWithSubrepo, как это
hg clone --pull --noupdate "C:\TestRepo\OriginalWithSubrepo" "C:\TestRepo\OriginalWithSubrepo-clone"
Созданный таким образом клон содержит всего несколько служебных файлов ртути, но нет фактических данных из исходного каталога Sub \.hg. Я не знаю, что означают эти файлы, но, очевидно, их достаточно для воссоздания репозитория, потому что, когда я обновляю рабочий каталог в клоне, все это заполняется всеми файлами, в том числе внутри каталога Sub \.hg. Однако, если я клонирую, затем переименовываю оригинал и затем пытаюсь обновить клон, это не работает, говоря, что OriginalWithSubrepo не найден, что означает, что все это основано на ссылках на оригинал.
Эта проблема не возникает, когда я запускаю клон с обновлением или когда я клонирую репозиторий без вложенных репозиториев.
Это ведет себя так же, когда я клонирую к сетевому ресурсу, где я действительно хочу, чтобы это работало.
Итак, как мне сделать полностью независимый клон репо с подпунктами (без одновременного обновления)?
Windows XP, версия hg 3.4.1
1 ответ
Когда вы добавляете первый вложенный репозиторий к родительскому репо, .hgsub
добавляется в родительский репо. Подотчет становится только подотчетом из изменений, которые фиксируют .hgsub
,
Когда вы делаете hg clone --noupdate --pull parent parent-clone
у родительского клона пока нет ни одной ревизии, и, следовательно, еще нет ревизии, в которой был создан субрепо
Итак, как мне сделать полностью независимый клон репо с подпунктами (без одновременного обновления)?
Я не думаю, что вы можете сделать это как таковой.
Но это может достигнуть того, что вы пытаетесь сделать (я читаю между строк здесь, но я предполагаю, что репозиторий на общей папке, но без каких-либо видимых файлов):
- Создайте репо в своей сетевой папке для своего родителя и саба
\\fileserver\repos\OriginalWithSub\
а также\\fileserver\repos\Sub\
- Измените ваш локальный файл OriginalWithSub .hgsub и установите для удаленного пути значение
\\fileserver\repos\Sub\
и совершать. - вставьте свои локальные репозитории в соответствующие им сетевые эквиваленты.
Оба репозитория теперь существуют в общем сетевом ресурсе, без каких-либо файлов, видимых внутри.hg, и вы можете клонировать \\fileserver\repos\OriginalWithSub\
(с обновлением) с другого компьютера и получите полную историю как OriginalWithSub, так и Sub.