为什么通过hudson获取git失败,而通过命令行git fetch工作?

时间:2010-09-13 23:10:56

标签: git hudson fetch

我正在尝试从github获取一个只读的git存储库,并通过hudson构建它。这个过程失败了。

这是哈德森的输出:

Started by an SCM change
Checkout:workspace / d:\hudson\home\jobs\gdcm-hudson\workspace - hudson.remoting.LocalChannel@19ba1d8
Using strategy: Default
Checkout:workspace / d:\hudson\home\jobs\gdcm-hudson\workspace - hudson.remoting.LocalChannel@19ba1d8
GitAPI created
Fetching changes from the remote Git repository
Fetching upstream changes from git://github.com/malaterre/gdcm.git
[workspace] $ "C:\Program Files (x86)\Git\bin\git.exe" fetch -t git://github.com/malaterre/gdcm.git +refs/heads/*:refs/remotes/origin/*
[workspace] $ "C:\Program Files (x86)\Git\bin\git.exe" ls-tree HEAD
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:674)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:641)
    at hudson.FilePath.act(FilePath.java:753)
    at hudson.FilePath.act(FilePath.java:735)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:641)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1061)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:479)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:411)
    at hudson.model.Run.run(Run.java:1273)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:129)

当我直接通过git bash命令行运行该fetch命令时,我没有得到任何响应(我认为这意味着它有效)。

我看了这个可能的解决方案: http://issues.hudson-ci.org/browse/HUDSON-7141?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

但是使用该版本的插件并没有改变这种行为。

我还没有让它与cmake合作,只是一直下载。我怎样才能让它发挥作用?

编辑:此问题不是Problem cloning / fetching repository using Git plugin for Hudson on Windows的副本,因为我没有在服务器上作为服务运行。

5 个答案:

答案 0 :(得分:8)

是的,我刚刚解决了这个问题。如果您打开d:\hudson\home\jobs\gdcm-hudson\workspace的Windows资源管理器,您应该能够看到.git目录,而不是其他内容。应该有一个工作副本,但没有。要解决此问题,您必须通过运行

来“填充”存储库
git pull git://github.com/malaterre/gdcm.git

这应该在.git目录旁边的d:\hudson\home\jobs\gdcm-hudson\workspace中创建一堆其他文件,你应该能够在hudson中执行构建。

答案 1 :(得分:5)

这发生在我以前工作正常的构建上。解决方案只是删除工作区目录并重新启动构建。

答案 2 :(得分:2)

Hudson的Git插件最近才出现这种错误消息(issue 6902, July 2010)。之前它曾经默默地继续下去(这是误导性的)。

您是否定义了任何子模块?
因为它看起来像Git Plugin Bug 4

  

我有以下设置:

     
      
  • 一个名为“master”的分支,它包含另一个项目的子模块
  •   
  • 一个名为“develop”的分支,它不包含子模块引用
  •   
     

如果我配置Hudson作业来构建/测试“develop”分支,则构建会中断,因为它无法执行子模块检出。因为这在切换到“develop”分支之前发生,所以在任何开始之前构建都会被破坏。

     

解决方案

     

我假设扫描 git ls-tree HEAD 的输出以获得160000个参考,以确定哪些条目是子模块。
  在大多数情况下,我认为此时的参考HEAD仍然指向master   而不是ls-tree'HEAD,也许在指定的分支上执行此操作?

答案 3 :(得分:0)

删除Hudson工作区目录.hudson后,它对我有用。我正在使用Hudson 2.2.1git plugin 2.2.1

答案 4 :(得分:0)

对于记录,在我的情况下,问题是配置了一个特殊的Git可执行文件(在全局Hudson设置中)。由于缺少库,此可执行文件无法在我的某些构建主机上运行。当使用/ usr / bin / git时,它可以工作。

所以看起来所描述的错误消息确实可以指示任何 Git错误。