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у родительского клона пока нет ни одной ревизии, и, следовательно, еще нет ревизии, в которой был создан субрепо

Итак, как мне сделать полностью независимый клон репо с подпунктами (без одновременного обновления)?

Я не думаю, что вы можете сделать это как таковой.

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

  1. Создайте репо в своей сетевой папке для своего родителя и саба \\fileserver\repos\OriginalWithSub\ а также \\fileserver\repos\Sub\
  2. Измените ваш локальный файл OriginalWithSub .hgsub и установите для удаленного пути значение \\fileserver\repos\Sub\ и совершать.
  3. вставьте свои локальные репозитории в соответствующие им сетевые эквиваленты.

Оба репозитория теперь существуют в общем сетевом ресурсе, без каких-либо файлов, видимых внутри.hg, и вы можете клонировать \\fileserver\repos\OriginalWithSub\ (с обновлением) с другого компьютера и получите полную историю как OriginalWithSub, так и Sub.

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