Mercurial变更集挂钩的状态为-1

时间:2011-01-05 16:24:59

标签: mercurial permission-denied mercurial-hook

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

我已将此挂钩输入为detailed in the FAQ。这会安装钩子,但当我将某些东西推送到远程存储库时,我收到一个错误:

added 1 changesets with 1 changes to 1 files
running hook changegroup: hg update >&2
warning: changegroup hook exited with status -1

another stackoverflow question与此类似,但除了可能是某处的权限错误之外,它没有提供任何解决方案。

有没有其他人遇到过这个问题,是否有其他人可以对此有所了解,或者让我先知道从哪里开始解决这个问题?感谢。

1 个答案:

答案 0 :(得分:3)

标准搜索路径中有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)不要忘记标记为可执行文件:chmod a+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文件的内容。