我们最近从SVN转到git。我们使用主“发布”分支(主),以及开发人员正在处理的每个功能的功能分支。 在TeamCity中,我们为每个功能分支都有一个项目,当然还有一个主人的项目。
当我们使用SVN时,每当有人从master合并到他的功能分支或反之亦然时,TeamCity会将合并视为一次提交。现在,使用git,每次合并都会导致TeamCity显示此合并带来的所有提交。
这会导致一些问题,例如当某人从master合并到他的功能分支时,现在他的TeamCity项目由于该合并而显示“283挂起的更改”,如果构建失败,将通知这些更改的作者,如如果他们在功能分支上进行了这些更改。
有没有办法告诉TeamCity将git合并视为单个提交?
我们可以使用压缩合并来解决它,但这是我们真正想要避免的事情。
答案 0 :(得分:26)
我很确定这是我们几天前遇到的问题,反之亦然。我们将dev分支合并为master,这导致TC尝试构建作为合并一部分的每个签入。显然不是我们想要的。
要解决此问题,请在Trigger build on each check-in
中取消选中Build Trigger
选项。
您从源分支获得完整的更改历史记录,但TeamCity将仅使用最新的合并代码构建目标分支。如果该构建失败,则合并应该是唯一通知的。
答案 1 :(得分:4)
这是一个很长的镜头,您可能已经尝试过了,但可能会将per check-in
触发器选项应用于Include several check-ins in build if they are from the same committer
吗?这可能足以欺骗TC将提交构建为单个包。
答案 2 :(得分:3)
这是两种可能的解决方案:
解决此问题的一种方法(尽管可能非常尴尬,具体取决于您的情况)是在构建配置级别通知用户,而不是通知谁已提交/已合并。为不同的主题分支创建单独的构建配置,并为每个构建配置配置通知,以便仅通知主题分支的“所有者”。
不太确定,但值得一试:您可以配置每个主题分支的通知,例如:通过分支路径上的通配符模式。这应该可以通过使用例如DYI 自定义通知器插件来实现。分支名称属性teamcity.build.vcs.branch.<my_vcs_name>。
TeamCity电子邮件通知的一个特定限制(应该很容易支持)是您无法通过构建配置的组合和“忽略不是由我的更改引起的故障”来过滤通知。然后,至少您可以为主分支配置构建,以便通知提交者,并仅为主题分支项目创建特定设置。