带有子页面的存储库上的Mercurial CLONE和PULL不会创建完全独立的存储库

时间:2015-07-13 19:58:15

标签: mercurial clone mercurial-subrepos

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

当我像这样克隆OriginalWithSubrepo时

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

这样创建的克隆只包含一些mercurial内务文件,原始Sub \ .hg目录中没有实际数据。我不知道这些文件是什么意思,但显然它们足以重新创建repo,因为当我更新clone中的工作目录时,整个内容都会被所有文件填满,包括Sub \ .hg目录中的文件。但是,如果我克隆,然后重命名原始,然后尝试更新克隆,它没有工作说没有找到OriginalWithSubrepo,这意味着它都基于原始链接。

当我使用update运行clone时,或者在没有subrepos的情况下克隆存储库时,不会出现此问题。

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

那么如何使用subrepos(没有同时更新)完全独立克隆repo?

Windows XP,hg版本3.4.1

1 个答案:

答案 0 :(得分:0)

将第一个子报表添加到父仓库时,.hgsub会添加到父仓库中。 subrepo只会变为提交.hgsub的变更集的子参数。

执行hg clone --noupdate --pull parent parent-clone时,父克隆尚未处于任何变更集中,因此尚未创建创建子项目的变更集

  

那么如何使用subrepos(没有同时更新)完全独立克隆repo?

我认为你不能这样做。

但是这可能会实现你想要做的事情(我在这里阅读这些内容,但我猜测在共享上有回购,但没有任何文件可见):

  1. 为您的父级和子\\fileserver\repos\OriginalWithSub\以及\\fileserver\repos\Sub\
  2. 在您的网络共享上创建回购
  3. 修改您的本地OriginalWithSub .hgsub将远程路径设置为\\fileserver\repos\Sub\并提交。
  4. 将您的本地存储库推送到各自的网络共享对象。
  5. 两个存储库现在都存在于网络共享中,除了内部.hg之外没有任何文件可见,您可以从另一台计算机克隆\\fileserver\repos\OriginalWithSub\(带更新)并获取OriginalWithSub和Sub的完整历史记录。 / p>