在使用git时,如何告诉TeamCity将合并视为单个提交?

yel*_*ood 31 git teamcity continuous-integration

我们最近从SVN转到git.我们使用主"发布"分支(主),以及开发人员正在处理的每个功能的功能分支.在TeamCity中,我们为每个功能分支都有一个项目,当然还有一个主项目.

当我们使用SVN时,每当有人从master合并到他的功能分支或反之亦然时,TeamCity会将合并视为一次提交.现在,使用git,每次合并都会导致TeamCity显示此合并带来的所有提交.

这会导致一些问题,例如当有人从master合并到他的功能分支时,现在他的TeamCity项目由于合并而显示"283挂起的更改",如果构建失败,将通知这些更改的作者,就好像他们做了功能分支上的这些更改.

有没有办法告诉TeamCity将git合并视为单个提交?

我们可以使用压缩合并来解决它,但这是我们真正想要避免的.

Jaz*_*lli 26

我很确定这是我们几天前遇到的问题,反之亦然.我们将dev分支合并为master,这导致TC尝试构建作为合并一部分的每个签入.显然不是我们想要的.

要修复它,请保持Trigger build on each check-in选中未选中的选项Build Trigger.

您可以从源分支获得完整的更改历史记录,但TeamCity将仅使用最新的合并代码构建目标分支.如果该构建失败,则合并应该是唯一通知的.

  • 这听起来非常糟糕.我的印象是,关闭它不会触发任何构建.但我试过了,我的双重构建问题已经消失,感谢Jaz. (6认同)

Joh*_*err 5

这是一个长期尝试,您可能已经尝试过,但是将per check-in触发器选项应用于Include several check-ins in build if they are from the same committer? 这可能足以诱使 TC 将提交构建为单个包。


The*_*ail 3

这是两种可能的解决方案:

  1. 解决此问题的一种方法(尽管可能非常尴尬,具体取决于您的情况)是在构建配置级别通知用户,而不是通知谁提交/被合并。为不同的主题分支创建单独的构建配置,并为每个构建配置配置通知,以便仅通知主题分支的“所有者”。

  2. 不太确定,但值得一试:您可以为每个主题分支配置通知,例如通过分支路径上的通配符模式。这应该可以通过使用分支名称属性 teamcity.build.vcs.branch.<my_vcs_name> 的DYI自定义通知程序插件来实现。

TeamCity 电子邮件通知的一个具体限制(应该很容易支持)是您无法通过构建配置和“忽略不是由我的更改引起的故障”的组合来过滤通知。那么至少您可以为主分支配置构建,以便通知提交者,并仅为主题分支项目创建特定设置。