【问题标题】:Cloning mercurial repo to the remote host将 mercurial repo 克隆到远程主机
【发布时间】:2010-10-24 07:36:37
【问题描述】:

Mercurial 支持将存储库推送式克隆到远程主机,但是新克隆的存储库不包含工作副本。是否有任何“隐藏”选项可以对这些克隆的 repos 进行 mercurial 调用更新?

这是一个例子:

1) hg 初始化你好

2) hg clone hello ssh://somehost/hello

ssh://somehost/hello 仅包含 .hg 目录,我必须在 shell 中执行以下命令才能填充工作副本:

3) ssh somehost 'cd hello && hg update'

有什么办法可以避免第 3 步)?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    您可以在接收端创建一个钩子。将以下部分添加到您的 repo/.hg/hgrc

    [hooks]
    changegroup = hg update
    

    应该这样做。请注意,钩子不会被克隆。

    【讨论】:

    • 但是,如果 repo 被克隆到远程主机,它如何在远程端包含这些设置? ;)
    • 这有助于您稍后想要再次推送到接收器,而不必再次通过 ssh 调用更新。您在问题中描述的过程实际上只需要执行一次,然后是 push push push。这就是我所提议的可以简化事情的地方。一推即忘。 =P
    【解决方案2】:

    没有强制更新远程存储库的隐藏选项。只有一个条件确定是否执行更新(例如,Mercurial 1.0.1 源代码中 hg.py 的第 239 行):

    if dest_repo.local():
    

    如果你要在工作副本中做一些工作,无论如何你都要登录,此时运行“hg update”非常容易,因此没有太多动力放松当前对远程的限制克隆。

    【讨论】:

      【解决方案3】:

      我也有同样的问题,不幸的是,没有简单的解决方案可以避免步骤 3。mercurial 不会像“git clone”那样远程检查工作副本,因此在部署 html 时总是会有这个额外的步骤文件第一次,例如。

      【讨论】:

      • 在服务器上安装一个钩子(一次):changegroup = hg update[hooks] 设置中。完成初始克隆后,只需执行一次。然后,您的存储库将在您推送时自行更新。
      • 我不知道为什么我被否决了:首选的解决方案只是一种解决方法,因为您仍然需要执行第 3 步(通过 ssh 连接到服务器)。
      • 谁在乎你是否必须 ssh 一次,关键是不必每次都这样做
      • @Lo'oris:因为这不是 OP 要求的(即:不回答问题)。
      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      相关资源
      最近更新 更多