这应该是一件非常简单的事情,但由于某种原因,它不适用于我的 Mercurial 存储库。我想要的只是让远程仓库hg update
在有人推送时自动运行。所以我在 .hg/hgrc 文件中有这个:
[hook]
changegroup = hg update
很简单,对吧?但由于某种原因,这永远不会执行。我还尝试编写一个执行此操作的 shell 脚本。.hg/hgrc 看起来像这样:
[hooks]
changegroup = /home/marc/bin/hg-update
hg-update 看起来像这样:
#!/bin/sh
hg help >> /home/marc/works.txt;
hg update >> /home/marc/works.txt;
exit 0;
但同样,这不会更新。的内容hg help
被写入works.txt
,但没有任何内容被写入hg update
。我在这里有什么明显的遗漏吗?这已经困扰我好几天了,我似乎无法让它发挥作用。
更新
好的,再次使用-v
从我的工作站推送到远程仓库的命令行上的开关不会打印任何详细消息,即使我echo
在.hg/hgrc
. 但是,当我从同一文件系统上的 repo 克隆进行推送时(我通过 SSH 登录),这就是我得到的:
bash-3.00$ hg -v push ../test-repo/ 推送到 ../test-repo/ 寻找变化 找到 1 个变更集 运行钩子 prechangegroup: echo "远程仓库位于 `hg tip -q`" echo "远程仓库 wdir 位于 `hg parents -q`" 远程仓库位于 821:1f2656753c98 远程仓库 wdir 位于 821:1f2656753c98 添加变更集 添加清单 添加文件更改 添加了 1 个变更集,对 1 个文件进行了 1 次更改 运行钩子更改组:回声“正在更新....`hg update -v`” echo "远程仓库位于`hg tip -q`" echo "远程仓库 wdir 位于 `hg parents -q`" 更新....解决清单 获取 license.txt 1 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 远程仓库位于 822:389a6c7276c6 远程仓库 wdir 位于 822:389a6c7276c6
所以它有效,但只有当我从同一个文件系统推送时。如果我尝试通过网络从另一个工作站推送到 repo,它就不起作用。