【发布时间】:2010-04-01 15:03:05
【问题描述】:
我们使用 TeamCity 进行持续集成,使用 Git 进行源代码控制。一般来说,它工作得很好 - 方便、现代并且在测试失败时快速反馈给我们。
有一个与 Git 合并细节相关的奇怪行为。以下是案例的步骤:
- 第一个开发者从主存储库中提取。
- 第二个开发人员从主存储库中提取。
- 第一个开发者在本地提交 A。
- 第二个开发者在本地提交 B;
- 第二个开发者推送提交 B。
- 第一个开发人员想要推送提交 A,但由于他必须先拉取提交 B,所以无法推送。
- 第一个开发者从远程仓库拉取。
- 第一个开发者推送提交 A 并生成合并分支提交。
主仓库中的提交历史如下:
- B 第二开发者
- 第一个开发者
- 合并分支第一个开发者。
现在让我们假设 Second Developer 在他的提交 B 中修复了一些失败的测试。
TeamCity 将做的事情如下:
- 提交 B 到达 - TeamCity 构建 #1 并通过所有测试
提交 A 到达 - TeamCity 使构建 #2(没有提交 B)测试栏变为红色!
TeamCity 认为待处理的“合并分支”提交不包含任何更改(任何新文件) - 但它实际上包含提交 B 的合并,因此 TeamCity 不想在这里进行新构建并将测试变为绿色。
这里有两个问题: 1. 在我们的例子中,我们在第二次提交(提交 A)中返回失败的测试 2. TeamCity 不想构建新版本并让测试恢复绿色。
有谁知道如何解决这两个问题。
我考虑了一些合理的通用方法。
【问题讨论】:
-
您是否尝试过向 JetBrains 询问此事?
-
很少有类似的问题。看起来这里是最接近的 - youtrack.jetbrains.net/issue/TW-9584
-
«伙计们,我相信这个问题在 TeamCity 5.0.3(和 5.1 EAP)中并不实际。如果您遇到问题(TeamCity 不显示包含 0 个已更改文件的合并提交),请确保您不使用较旧的 git 插件(.BuildServer/plugins 不应包含 jetbrains.git.zip)。如果您使用 TeamCity 5.0.3 或 5.1 EAP,请在此处添加评论。»
标签: java git continuous-integration teamcity git-merge