Mercurial变更集挂钩存在,状态为-1

Mercurial变更集挂钩存在,状态为-1,mercurial,permission-denied,mercurial-hook,Mercurial,Permission Denied,Mercurial Hook,我在局域网上使用Mercurial SCM,使用普通的共享文件夹而不是HTTP,在运行自动更新挂钩时遇到问题 我已经进入这个钩子了。这将安装钩子,但当我将某些内容推送到远程存储库时,会出现错误: added 1 changesets with 1 changes to 1 files running hook changegroup: hg update >&2 warning: changegroup hook exited with status -1 与此类似,但它没有提供

我在局域网上使用Mercurial SCM,使用普通的共享文件夹而不是HTTP,在运行自动更新挂钩时遇到问题

我已经进入这个钩子了。这将安装钩子,但当我将某些内容推送到远程存储库时,会出现错误:

added 1 changesets with 1 changes to 1 files
running hook changegroup: hg update >&2
warning: changegroup hook exited with status -1
与此类似,但它没有提供任何解决方案,只是可能在某个地方出现权限错误


有没有其他人遇到过这个问题,其他人能不能对此提供更多的信息,或者告诉我从哪里开始解决这个问题?谢谢。

您的标准搜索路径中是否有
hg

.hgrc
配置替换为自定义脚本,例如

[hooks]
changegroup = /var/tmp/myscript.sh

[ui]
debug = true
(unix)在
/var/tmp/myscript.sh
中编写如下内容:

#!/bin/sh
set -e
echo ---------- >>/tmp/myscript.log
set >>/tmp/myscript.log
echo --- >>/tmp/myscript.log
pwd >>/tmp/myscript.log
hg update >>/tmp/myscript.log 2>&1
(unix)不要忘记标记为可执行文件:
chmoda+x/var/tmp/myscript.sh

(windows)相应的批处理文件
myscript.bat
为:

@echo off
echo ------ >>%TEMP%\myscript.log
set >>%TEMP%\myscript.log
echo --- >>%TEMP%\myscript.log
cd >>%TEMP%\myscript.log
hg update >>%TEMP%\myscript.log 2>&1
(windows)当然,
.hgrc
中的行是
changegroup=\your\directory\myscript.bat

运行
hg push
命令再现问题


检查
/tmp/myscript.log
文件的内容。

如果您在windows上,那么
&2
将不适用于您,这是bash shell ism。@Ry4an:如中所述,它也适用于windows。我记得过去许多windows用户必须删除它才能使其正常工作,但可能他们的command.exe版本功能较差?或者是mercurial调用钩子,而不通过输出重定向来运行它?我没有要测试的windows系统,但我看到windows人员必须删除该系统才能使此特殊技巧发挥作用。不幸的是,我正在使用windows。请尝试myscript.bat脚本。输出转到%TEMP%。