Apache Ant在调用git pull时卡住了

时间:2014-10-16 08:11:40

标签: git ant hudson

在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/subsubfolderC:\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 pull我会收到错误。
  • 如果我试图执行git checkout它可以工作。
  • 如果我试图执行git fetch,它会像git pull一样挂起。

另一个编辑,也许是一些线索: 我改变直接Git调用一个带有git命令的.bat文件。一些CD到达目录然后git pull很简单。当我运行脚本时,它工作得很好。但它永远挂在哈德森。也许在Java中调用git subprocess需要一些环境变量? Git使用SSH无电源连接,后台没有任何代理。

1 个答案:

答案 0 :(得分:0)

如果它“挂起”,可能会有一个交互式提示,而Jenkins无法处理。

尝试在最后将<arg line="> out.txt 2>&1"/>添加到exec。这会将所有内容重定向到文件,以便在它再次挂起后,终止该作业,并查看该文件的内容out.txt

请注意,您需要转发>&,因此它将是:
<arg line="&gt; out.txt 2&gt;&amp;1"/>