【问题标题】:How to preserve Mercurial subrepo remappings across clone/pull?如何跨克隆/拉取保留 Mercurial 子存​​储库重新映射?
【发布时间】:2012-03-27 19:03:13
【问题描述】:

我正在尝试在 Mercurial (2.1.1) 中设置子存储库重新映射,以考虑将来可能更改的子存储库路径。当.hgrc 文件中指定[subpaths] 键时,我已经能够正确读取和处理它。但是,当我从该存储库克隆或拉取时,.hgrc 文件不会被复制,因此子存储库重新映射不会被带到目标存储库。

查看SubrepoRemappingPlan 后,我的第一个想法是将[subpaths] 放入.hg/subpaths 文件中, 应该在克隆/拉取时复制该文件。然而,事实证明这个功能已经过时了,子路径文件被替换为更通用的配置共享机制,通过Projrc扩展。

但是,Projrc 解决方案的问题是:

  1. 这是一个单独的扩展,所有团队成员都需要安装并启用

  2. 出于安全原因,需要进行额外配置以告知 Projrc 允许从哪里拉取(以及允许拉取什么)

所以,我的问题是,Mercurial 中是否有任何内置机制来实现跨克隆/拉取保留的子存储库映射?

【问题讨论】:

    标签: mercurial subrepos mercurial-subrepos


    【解决方案1】:

    一般来说,最好的方法是对子存储库使用相对路径(请参阅http://mercurial.aragost.com/kick-start/en/subrepositories/),这样它们就根本不需要重新映射。

    例子:

    + main repo
      + subrepo
      + .hgsub
    

    .hgsub:

    subrepo = subrepo
    

    【讨论】:

    • 我们的子仓库都是远程的,所以我们不能在 .hgsub 文件中使用绝对路径。
    • 没有内置方法,AFAIK。不幸的是,您找到的解决方案是尝试补救它。
    • @arathorn:即使它们是远程的,您仍然可以将它们克隆到您自己的服务器上,因此使用相对路径。然后,您需要一个 cronjob 来对服务器上的 subrepo 克隆进行新的更改。
    • (我上面的评论应该是:“所以我们不能在 .hgsub 文件中使用 relative 路径。)
    【解决方案2】:

    将子路径映射添加到您的.hgsub 文件应该可以解决问题(如mercurial wiki 中所述)。

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 2011-06-09
      • 2011-11-16
      • 2012-02-05
      • 1970-01-01
      • 2011-06-25
      • 2011-05-24
      • 1970-01-01
      • 2010-10-29
      相关资源
      最近更新 更多