【问题标题】:Mercurial CLONE with PULL on a repository with subrepos doesn't create a fully independent repositoryMercurial CLONE with PULL 在具有子存储库的存储库上不会创建完全独立的存储库
【发布时间】:2015-10-02 05:53:04
【问题描述】:

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

当我像这样克隆 OriginalWithSubrepo 时

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

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

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

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

那么,如何使用子存储库(没有同时更新)对存储库进行完全独立的克隆?

Windows XP,hg 版本 3.4.1

【问题讨论】:

    标签: mercurial clone mercurial-subrepos


    【解决方案1】:

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

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

    那么,如何使用子存储库(没有同时更新)对存储库进行完全独立的克隆?

    我认为你不能这样做。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-17
      • 2011-03-05
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      相关资源
      最近更新 更多