我们使用 TeamCity 进行持续集成,使用 Git 进行源代码控制。一般来说,它工作得很好——方便、现代和良好的我们在测试失败时的快速反馈。
有一个与 Git 合并细节相关的奇怪行为。以下是案例的步骤:
- 第一个开发人员从主仓库中提取。
- 第二个开发人员从主仓库中提取。
- 第一个开发人员在本地提交 A。
- 第二个开发者在本地提交 B;
- 第二个开发者推送提交 B。
- 第一个开发人员想要推送提交 A 但不能,因为他必须先拉提交 B。
- 第一个开发人员从远程存储库中提取。
- 第一个开发人员推送提交 A 并生成合并分支提交。
主仓库中的提交历史如下:
- B二级显影剂
- 第一个开发者
- 合并分支第一个开发者。
现在让我们假设 Second Developer 在他的提交 B 中修复了一些失败的测试。
TeamCity 将做的事情如下:
- 提交 B 到达 - TeamCity 构建 #1,所有测试均通过
提交 A 到达 - TeamCity 使构建 #2(没有提交 B)测试栏变为红色!
TeamCity 认为 Pending “Merge Branch” 提交不包含任何更改(任何新文件) - 但它实际上包含提交 B 的合并,因此 TeamCity 不想在此处进行新构建并使测试变为绿色。
这里有两个问题: 1. 在我们的例子中,我们在第二次提交(提交 A)中返回失败的测试 2. TeamCity 不想进行新的构建并使测试返回绿色。
有谁知道如何解决这两个问题。
我考虑了一些合理的一般方法。