代码之家  ›  专栏  ›  技术社区  ›  vlad_tepesch

如何在推送后自动将远程Mercurial存储库保持在提示位置

  •  2
  • vlad_tepesch  · 技术社区  · 6 年前

    我在一些文件服务器net share上创建了一个mercurial存储库。

    是否可以自动将远程存储库更新为 tip 如果有人推动它的变化?

    因为其他人(纯用户)可能会复制存储库内容(而不是克隆,因为缺少.hg),我希望他们获得最新版本。

    因为它是简单NAS上的一个共享,所以如果推送客户机可以调用这个更新,那就更好了。

    2 回复  |  直到 6 年前
        1
  •  1
  •   vlad_tepesch    6 年前

    好像有个钩子 changegroup 事件可以解决这个问题。

    将以下行添加到存储库的配置文件(repo/.hg/hgrc)

    [hooks]
    changegroup = hg update
    

    这个解决方案是针对一个稍有不同的问题提出的: Cloning mercurial repo to the remote host

    至少在Windows下,这似乎只适用于本地存储库。原因是, hg 尝试运行 cmd 在失败的远程路径上,因为它不支持将UNC路径作为当前目录。

    显式添加存储库URL可以修复此问题,但它不再独立于客户端。

    [hooks]
    changegroup = hg update -R %HG_URL%
    
        2
  •  0
  •   StayOnTarget Charlie Flowers    6 年前

    您可以将服务器存储库视为“本地工作目录”,然后从您自己的PC拉到该位置。如果你使用 hg pull --update 然后它会自动将工作文件夹更新为最新。

    一种方法是登录到您的NAS,并在那里实际运行hg命令行程序。如果没有,您也可以将nas文件夹安装到本地PC上,然后将chdir安装到其映射的本地文件夹中,并使用本地hg客户机执行此操作。

    这可能看起来很奇怪,但Mercurial并不关心哪一个是“克隆”和哪一个是“服务器”,您可以在工作流中交换它们。