我在 Windows 2008 R2 Server 机器上安装了 Bonobo Git Server。我创建了一个存储库并将post-receive.bat
文件放在D:\Inetpub\Bonobo.Git.Server\App_Data\Repositories\REPO\hooks
目录中。
这是文件的内容:
#!/D/Inetpub/Bonobo.Git.Server/App_Data/Git/sh.exe
BINPATH="/D/Inetpub/Bonobo.Git.Server/App_Data/Git/"
REPOPATH="/D/Inetpub/Bonobo.Git.Server/App_Data/Repositories/REPO/"
GIT="${BINPATH}git"
# Change working directory to the repo root
cd $REPOPATH
read oldrev
read newrev
read refname
branch=$($GIT rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
echo "receive $branch $refname" >> "${REPOPATH}hookstest.log"
fi
如果我从 shell 执行这个文件并输入“whatever any master”,那么文件“receive master master”将添加到hookstest.log
. 但是,当我将更改推送到 REPO 时,文件不会更新,就像它没有被执行一样。
我不知道在哪里寻找发生的错误。大多数 linux 教程都提到该文件必须具有 +x 标志。这显然在 Windows 上不存在,但我检查了在 IIS 中运行 Bonobo Git Server 的用户对批处理文件具有执行权限。
我也在犹豫文件的名称,所以我复制了它并删除了 .bat 扩展名。那也没有帮助。知道如何让钩子在 Windows Server 上工作吗?
编辑
正如@crashmstr 所建议的,我创建了一个批处理文件(一个带扩展名,一个不带扩展名),其中包含:
date /t >> D:\Inetpub\Bonobo.Git.Server\App_Data\Repositories\REPO\testhooks.txt
当我手动执行文件时,即使创建了文件,这也不起作用。