Apache Ant在调用git pull时卡住了



在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:Gitcmdgit.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:directpathtosubfoldersubsubfolder开始我的Hudson作业时,我的作业就停留在它上面,我在控制台输出中只得到echo。甚至没有任何错误。Hudson安装在装有Windows XP的机器上。

我试着在Windows CMD中使用这个命令——当我在repo文件夹时,它就可以工作了,如下所示:

C:directpathtosubfoldersubsubfolder>C:Gitcmdgit.exe pull -v

我做错了什么?有什么方法可以更好地集成git和ant?

一些新注释:

  • 如果我试图在坏目录中执行git pull,我会出错
  • 如果我尝试执行git签出,它会起作用
  • 如果我试图执行git fetch,它会像git pull一样挂起

另一个版本,也许有一些线索:我将Git直接调用改为一个包含Git命令的.bat文件。只需一些CD就可以到达目录,然后是git pull。当我运行脚本时,它只是工作得很好。但它永远挂在哈德逊。也许是Java中调用git子流程需要一些环境变量?Git使用SSH无功耗连接,后台没有任何代理。

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

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

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

相关内容

  • 没有找到相关文章

最新更新