Git挂钩没有发射

我有一个本地的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在路径中)
  • 确保你的命令行测试在Git中使用了curl包,而不是在Windows上使用GoW Gnu的一个包(如果你已经安装了GoW)
  • 如果有帮助,在你的post-commit脚本的开头添加一个#!/bin/sh (因为它将由msys bash执行)
  • 该名称必须是后c ommit(区分大小写,没有像.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" 

这现在按预期工作。