在apache ant脚本中我有宏:
<macrodef name = "git">
<attribute name = "command" />
<attribute name = "options" />
<attribute name = "dir" default = "" />
<attribute name="failonerror" default="false"/>
<sequential>
<echo message = "GIT Command: git @{command} @{options}, dir: @{dir}" />
<exec executable = "C:\Git\cmd\git.exe" dir = "@{dir}">
<arg value = "@{command}" />
<arg value = "@{options}" />
</exec>
</sequential>
</macrodef>
后来我打电话来了:
<git command = "pull" options = '-v' dir = "subfolder/subsubfolder" failonerror = "true"/>
但是当我用dir subfolder/subsubfolder
或C:\direct\path\to\subfolder\subsubfolder\
开始我的Hudson工作时,我的工作就停留在它上面,我只得到控制台输出中的回显。甚至没有错误或任何东西。 Hudson安装在装有Windows XP的计算机上。
我尝试在Windows CMD中使用此命令 - 当我在repo文件夹中时,它正在工作:
C:\direct\path\to\subfolder\subsubfolder>C:\Git\cmd\git.exe pull -v
我做错了什么?有没有办法更好地集成git与ant?
一些新笔记:
另一个编辑,也许是一些线索:
我改变直接Git调用一个带有git命令的.bat文件。一些CD
到达目录然后git pull
很简单。当我运行脚本时,它工作得很好。但它永远挂在哈德森。也许在Java中调用git subprocess需要一些环境变量? Git使用SSH无电源连接,后台没有任何代理。
答案 0 :(得分:0)
如果它“挂起”,可能会有一个交互式提示,而Jenkins无法处理。
尝试在最后将<arg line="> out.txt 2>&1"/>
添加到exec
。这会将所有内容重定向到文件,以便在它再次挂起后,终止该作业,并查看该文件的内容out.txt
请注意,您需要转发>
和&
,因此它将是:
<arg line="> out.txt 2>&1"/>