“FATAL: Error computing merge base”是什么意思?

7

我已经运行Jenkins大约一年了,它构建主分支、rc*和生产分支。每次提交时,它执行git clone,执行bundle install,运行migration等操作。它一直完美地工作着。最近,它一直失败并且我得到了以下的回溯(traceback):

FATAL: Error computing merge base
hudson.plugins.git.GitException: Error computing merge base
  at hudson.plugins.git.util.GitUtils.filterTipBranches(GitUtils.java:149)
  at hudson.plugins.git.util.DefaultBuildChooser.getAdvancedCandidateRevisions(DefaultBuildChooser.java:201)
  at hudson.plugins.git.util.DefaultBuildChooser.getCandidateRevisions(DefaultBuildChooser.java:46)
  at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1057)
  at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:948)
  at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2417)
  at hudson.remoting.UserRequest.perform(UserRequest.java:118)
  at hudson.remoting.UserRequest.perform(UserRequest.java:48)
  at hudson.remoting.Request$2.run(Request.java:326)
  at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
  at java.lang.Thread.run(Thread.java:679)

以下内容即刻显示:

Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing commit 2faf546491565d033b1e0a79bef4b2d107447f49
  at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:149)
  at org.eclipse.jgit.revwalk.RevWalk.getCachedBytes(RevWalk.java:853)
  at org.eclipse.jgit.revwalk.RevCommit.parseHeaders(RevCommit.java:142)
  at org.eclipse.jgit.revwalk.MergeBaseGenerator.next(MergeBaseGenerator.java:148)
  at org.eclipse.jgit.revwalk.StartGenerator.next(StartGenerator.java:102)
  at org.eclipse.jgit.revwalk.RevWalk.next(RevWalk.java:414)
  at hudson.plugins.git.util.GitUtils.filterTipBranches(GitUtils.java:127)
  ... 14 more

这个提交错误很困惑,因为所有分支都包含它。

"计算合并基础时出错"是什么意思?为什么我会收到缺少提交信息的消息?

如果有任何见解,请不吝赐教。

谢谢。

git fsck:

Checking object directories: 100% (256/256), done.
Checking objects: 100% (3203/3203), done.

在我的Jenkins配置中,我的git插件配置如下:

  1. 在构建之前清空工作区
  2. 使用浅克隆

我正在使用Jenkins版本1.528。


似乎您的本地存储库已损坏。git fsck 是否有任何奇怪的输出?另外,请手动验证您的远程是否正确。另一件事是在拉取之前设置 Jenkins 清理工作区(即放弃所有本地更改)。该项目配置中有一个设置可用于此。 - rlegendi
你应该在这个上面打上 Jenkins 的标签,我的看法。 - mnagel
你一直都在使用浅克隆吗?我认为,根据克隆的深度,找到两个分支的合并基础(实质上是两个分支共同拥有的最新提交或两个分支分叉的点)可能会很困难。也许你以前从未遇到过这样的情况,即两个分支的合并基础足够深,可以被浅克隆修剪掉... - twalberg
我关闭了浅克隆。这次我的分支构建成功了。我会暂时保持关闭状态,看看是否会再次出现。如果没有问题,我将关闭并确认禁用浅克隆是解决方案。谢谢。 - MCano
1个回答

8

根据twalberg在上面的评论中提到,禁用浅拷贝解决了这个问题。所有分支构建完成并且任务也已完成。


你需要执行以下两个操作: 启用:构建前清空工作区, 禁用:使用浅克隆。 - Patrick Koorevaar
请问您能分享一下步骤吗? - Saurabh Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接