我有一个本地的Windows PC上运行git,一切工作正常; 我有jenkins和Phing工作自动化我的构build和testing过程,但是最后一步是自动启动构build一旦在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或我的repo中专门做一些事情来允许钩子触发? 如果没有,有没有特别的地方,我可以看看开始排除故障?
我是否需要在git或我的repo中专门做一些事情来允许钩子触发?
主要是:
chmod 775 .git/hooks/post-commit
,这在Windows上实际上并不需要) curl
'在%PATH%
(如果你的< c:\path\to\git
> \ bin在路径中) #!/bin/sh
(因为它将由msys bash执行) .sh
或.bat
扩展名) Op提到了一个关于curl
论点缺少引号的问题 。
这与它在msys bash会话中被调用的事实是一致的,并且shell引用规则适用。
我会确保' \
'字符不被解释。 请参阅“ 哪种引用方法保护哪些字符? ”:
双引号(
"..."
)保护除双引号,反斜杠,美元符号和反引号之外的所有内容,直到下一个双引号。
反斜杠可以用来保护"
,\
,$
或双引号内。
反斜线 – 换行符完全消失;"
\
,$
,或者换行符之前的反斜杠是从字面上来的。
在你的情况下,我会使用:
curl "http://localhost:8198/git/notifyCommit?url=c:\\scm\\myProject"
原来我需要在URL的周围加上引号来让它设置正确的本地路径:
curl "http://localhost:8198/git/notifyCommit?url=c:\scm\myProject"
这现在按预期工作。