0

我有一个 shell 存储库 OriginalWithSubrepo,其中包含一个包含一堆实际文件的子存储库 Sub。

当我像这样克隆 OriginalWithSubrepo

hg clone --pull --noupdate "C:\TestRepo\OriginalWithSubrepo" "C:\TestRepo\OriginalWithSubrepo-clone"

如此创建的克隆只包含几个 mercurial 管家文件,原始 Sub\.hg 目录中没有实际数据。我不知道这些文件是什么意思,但显然它们足以重新创建存储库,因为当我在克隆中更新工作目录时,整个文件都会被所有文件填满,包括 Sub\.hg 目录中的文件。但是,如果我克隆,然后重命名原始文件,然后尝试更新克隆文件,则说没有找到 OriginalWithSubrepo 是行不通的,这意味着它全部基于指向原始文件的链接。

当我使用更新运行克隆或克隆没有子存储库的存储库时,不会出现此问题。

当我克隆到网络共享时,它的行为相同,这是我真正希望它工作的地方。

那么如何使用 subrepos(w/oa 同时更新)对 repo 进行完全独立的克隆?

Windows XP,hg 版本 3.4.1

4

1 回答 1

0

当您将第一个子存储库添加到父存储库时,.hgsub会添加到父存储库。子存储库仅成为提交的变更集中的子存储库.hgsub

当您这样做时hg clone --noupdate --pull parent parent-clone,父克隆尚未位于任何变更集中,因此尚未位于创建子存储库的变更集中

那么如何使用 subrepos(w/oa 同时更新)对 repo 进行完全独立的克隆?

我不认为你可以这样做。

但这可能会实现您正在尝试做的事情(我在这里的两行之间阅读,但我猜想在共享上有 repo,但没有任何文件可见):

  1. 在您的网络共享上为您的父级和子级创建存储\\fileserver\repos\OriginalWithSub\\\fileserver\repos\Sub\
  2. 修改您的本地 OriginalWithSub .hgsub 将远程路径设置为\\fileserver\repos\Sub\并提交。
  3. 将您的本地存储库推送到它们各自的网络共享等效项。

这两个存储库现在都存在于网络共享中,除了 .hg 内部没有任何可见的文件,您可以\\fileserver\repos\OriginalWithSub\从另一台计算机克隆(更新)并获取 OriginalWithSub 和 Sub 的完整历史记录。

于 2015-07-24T22:07:25.037 回答