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

How to automatically keep remote mercurial repository at tip after pushes

我在一些文件服务器网络共享上创建了一个 mercurial 存储库。

如果有人推送更改,是否可以自动将远程存储库更新为 tip

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

由于它是简单 NAS 上的共享,如果推送客户端可以调用此更新就好了。

您可以将服务器存储库视为您的 "local working directory",然后从您自己的 PC 拉到该位置。如果你使用 hg pull --update 那么它会自动更新工作文件夹到最新的。

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

这似乎是一件奇怪的事情,但 Mercurial 不关心哪个是 "clone" 哪个是 "server",您可以在您的工作流程中互换它们。

看来 changegroup 事件上的钩子可以解决这个问题。

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

[hooks]
changegroup = hg update

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

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

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

[hooks]
changegroup = hg update -R %HG_URL%