为什么TFS允许单个变更集影响多个分支?如果没有很好的理由,这可以预防吗?

pia*_*ste 4 tfs tfs2013

最近发生的事情是,在完成对我们解决方案的Stable分支的一些小改动之后,同事意外地检查了他在开发分支上的一些未完成的工作.TFS将它全部捆绑为一个变更集.

虽然错误很容易被发现并修复,但我觉得我在这里缺少一些关键的东西.为什么TFS的"待定更改"页面允许您(更糟糕的是,默认情况下提供)创建包含您在每个分支上完成的所有内容的单个变更集?

在我看来,变更集应该包含对一个且只有一个分支的更改,因此您可以根据需要更有效地管理/合并/回滚它们,而不会影响其他分支.如果您同时处理多个分支,则在签入时应该要求您插入多个描述,并因此创建多个更改集.

假设我的推理至少是有效的(如果不一定是通用的),是否有办法配置TFS,以便用户不能一次签入多个分支的更改?

编辑:如果不这样做,我将很感激至少设置'待定更改'页面将默认情况下所有更改的文件放在'排除'部分,这样用户需要在签入之前手动包含它们(这将有助于他们注意任何意外的变化).

Jam*_*ily 6

最佳实践:开发人员可以通过右键单击文件夹,选择"签入挂起的更改"来检入限制到给定文件夹/分支的挂起更改.对于该签入操作,"待处理更改"视图将暂时"排除"在该文件夹/分支之外所做的任何更改,直到您完成签入为止.

是否可以阻止:根据Microsoft,有一个预先制定的签入策略选项,称为"强制签入仅包含属于当前解决方案的文件".假设您使用"解决方案",这可能对您有用.

为什么允许这样做:我想这就是TFS的设计方式.我怀疑它是将分支作为文件夹处理,并允许跨文件夹的签入泄漏到允许跨分支机构的签入.

  • 我自己没有使用过,但这里是Microsoft的文档:右键单击您的团队项目>团队项目设置>源代码管理>签到策略>添加>选择"代码分析">选择"强制签入到只包含属于当前解决方案的文件">单击确定[https://msdn.microsoft.com/en-us/library/ms181459.aspx] (2认同)

Giu*_*ian 3

我可以想到一些可能有用的场景,比如在发布分支和主分支上应用关键修复,并且合并不是一个选项。

为了最大限度地降低风险,您可以采取的措施是缩小开发人员工作空间的范围,正如 Jesse 在单独签入每个项目中所建议的那样?