如何从git post-commit钩子运行cmd

时间:2011-09-13 11:45:10

标签: git msbuild continuous-integration

我希望在我的私人项目上有一个微型ci循环,并且正在考虑是否可以在batfile中运行msbuild我可以在cmd窗口上着色反馈并自动化构建。所以,如果我可以从post-commit钩子中触发bat,我想这是可能的。它不可能是一个新的想法,但我在谷歌上找不到任何例子。

任何输入将不胜感激:)

2 个答案:

答案 0 :(得分:39)

@eckes的答案很接近但实际上是在运行我的bat / cmd文件,好像它们是bash脚本一样。如果你想将它们作为批处理文件运行,这对我有用:

后接收

#!/bin/sh
# important that it's got the .exe on the end!
cmd.exe /c "C:\path\to\somebatch.cmd"

somebatch.cmd

以下是您可能会觉得有用的一些东西/环境变量等:

@echo off

:: read commit hook stdin data e.g. "aa45321… 68f7abf… refs/heads/master"
set /p OLDREV_NEWREV_REFNAME=

echo Directory of this script is %~dp0
echo Repository root is %CD%

set OLDREV=%OLDREV_NEWREV_REFNAME:~0,40%
echo OLDREV: %OLDREV%

set NEWREV=%OLDREV_NEWREV_REFNAME:~41,40%
echo NEWREV: %NEWREV%

set REFNAME=%OLDREV_NEWREV_REFNAME:~82,999%
echo REFNAME: %REFNAME%

答案 1 :(得分:18)

从你的提交后挂钩调用.bat文件不需要任何魔法。

.git/hooks/post-commit.sample中的提交后挂钩模板重命名为.git/hooks/post-commit,并通过简单地写下批处理文件的名称来调用批处理文件:

#!/bin/sh
path/to/batchfile.bat

请注意,git hook的工作目录是repo的根目录。如果您使用.bat文件的相对路径,则必须考虑这一点。