我在本地Windows PC上运行git,一切都运行良好;我让Jenkins和Phing努力自动化我的构建和测试过程,但是最后一步是在git中提交后自动启动构建。
我尝试使用以下内容将post-commit添加到我的本地repo的.git / hooks目录中:
curl http://localhost:8198/git/notifyCommit?url=c:\scm\myProject
如果我直接从命令行运行此命令,Jenkins就可以完成工作,但是当我按下提交时,它不会触发。
此外,我尝试将https://github.com/MestreLion/git-tools/blob/master/git-restore-mtime处的脚本添加到名为post-checkout的主repo中的hooks目录中,以便我可以将提交时间添加为克隆时的文件修改时间。这也没有解雇。
我是否需要在git或我的仓库中专门做一些事情以允许挂钩开火?如果没有,有什么特别的,我可以开始进行故障排除吗?
答案 0 :(得分:4)
我是否需要在git或我的仓库中专门做一些事情来允许挂钩?
主要是:
chmod 775 .git/hooks/post-commit
,这在Windows上实际上并不需要)curl
”在%PATH%
中(如果您的< c:\path\to\git
> \ bin位于所述路径中,则属于这种情况)#!/bin/sh
(因为它将由msys bash执行).sh
或.bat
) The Op提到issue with missing quotes around the curl
argument
这与在msys bash会话中调用它并且 shell quoting 规则适用的事实一致。
我会确保'\
'字符也不被解释。
请参阅“Which quoting method protects which characters?”:
双引号(
"..."
)保护除双引号,反斜杠,美元符号和反引号之外的所有内容,直到下一个双引号。
反斜杠可用于保护"
,\
,$
或双引号内。
反斜杠 - 换行符对完全消失;不在"
,\
,$
或换行符之前的反斜杠字面意思。
在你的情况下,我会使用:
curl "http://localhost:8198/git/notifyCommit?url=c:\\scm\\myProject"
答案 1 :(得分:2)
原来我需要在URL周围加上引号以使其设置正确的本地路径:
curl "http://localhost:8198/git/notifyCommit?url=c:\scm\myProject"
现在按预期工作。