Hudson + Windows + GitHub + Git Plugin =非常慢的获取阶段

时间:2010-08-06 19:47:17

标签: windows git hudson github hudson-plugins

我正在建立我的第一个Hudson + Git项目(以前用Hudson + SVN完成了许多项目)。我期望克隆阶段很慢,因为我们的存储库非常大,但是使用fetch + merge的后续构建也同样长。启用以下选项:

  • 构建前合并
  • 结账后清洁

做“擦除工作区”。

...
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:username/ProjectFoo.git
[Foo] $ git fetch -t git@github.com:username/ProjectFoo.git +refs/heads/*:refs/remotes/origin/*

此时它停滞了很长时间。一旦它最终完成,它似乎按预期进展:

[Foo] $ git ls-tree HEAD
[Foo] $ git rev-parse origin/mybranch
Commencing build of Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch)
GitAPI created
Checking out Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch)
[Foo] $ git checkout -f c883d59dd5a506a0b586f679a256f539712bfccc
[Foo] $ git tag -a -f -m "Hudson Build #2" hudson-Foo-2
Recording changes in branch origin/mybranch
[Foo] $ git whatchanged --no-abbrev -M --pretty=raw c883d59dd5a506a0b586f679a256f539712bfccc..c883d59dd5a506a0b586f679a256f539712bfccc
Cleaning workspace
[Foo] $ git clean -fdx
...

当我从Git Bash命令行运行相同的fetch命令时,它几乎立即运行。

知道可能会发生什么吗?或提示加快速度?注意,克隆的存储库是210MB。 (大约十年的代码历史。)

3 个答案:

答案 0 :(得分:8)

我也遇到过这个问题,并想出了一个解决方法。当Hudson作为服务运行时,您的正常桌面环境会丢失一些东西,这会导致网络必须为每个进程重新加载。 msys-1.0.dll尝试在netapi32.dll中加载一些导致它花费这么长时间的东西。所以我刚刚从PuTTY下载了plink.exe,并将我的GIT_SSH env设置为使用它。问题避免了。

答案 1 :(得分:2)

这可能是一个迟到的答案。但是当Jenkins / Hudson在我的环境中作为Windows服务运行时,它确实解决了极端缓慢的问题 关键是让git获取Windows服务帐户中的rsa密钥!我让它的工作原理如下:

  1. 打开控制面板 - >管理工具 - >服务,找到" Jenkins"。
  2. 右键单击以打开“属性” - >“登录”,并以具有管理员访问权限的用户身份分配Jenkins Log On。
  3. 重新启动Jenkins,以及" git fetch"像在linux上那样闪电。
  4. ccutrer提供的解决方案在原始试用版中对我不起作用,因为plink无法从pageant获取rsa密钥(pageant在另一个用户会话中!)。部署我的步骤后,openssh和plink可以在那时运行良好。

答案 2 :(得分:1)

您可以尝试匿名访问而不是经过身份验证的访问吗?

$ git config remote.origin.url git://github.com/username/ProjectFoo.git   # read-only
$ git config remote.origin.pushurl git@github.com:username/ProjectFoo.git # authenticated

并查看Hudson作业中的提取是否仍然很慢?

参见插图“Using Github with MsysGit”。