Git挂钩没有开火

时间:2013-12-28 06:14:27

标签: windows git

我在本地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或我的仓库中专门做一些事情以允许挂钩开火?如果没有,有什么特别的,我可以开始进行故障排除吗?

2 个答案:

答案 0 :(得分:4)

  

我是否需要在git或我的仓库中专门做一些事情来允许挂钩?

主要是:

  • 确保挂钩是可执行的(chmod 775 .git/hooks/post-commit,这在Windows上实际上并不需要)
  • 确保“curl”在%PATH%中(如果您的< c:\path\to\git> \ bin位于所述路径中,则属于这种情况)
  • 确保您的命令行测试确实使用了与Git的curl包,而不是像GoW Gnu on Windows那样的另一个curl(如果你安装了GoW)
  • 如果有帮助,在你的提交后脚本开头添加#!/bin/sh(因为它将由msys bash执行)
  • 该名称必须是post-cmitmit(区分大小写,不包含.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"

现在按预期工作。