在签入或合并时避免不同开发人员之间的意外覆盖

时间:2015-05-15 17:33:24

标签: tfs tfvc

不同的开发人员检查触摸相同文件的代码或不同的分支可能会合并。我是管理员方面的新手TFS,但我知道如何对代码进行基本检查。如何避免管理员端的代码冲突?我们使用Microsoft Team Foundation服务器作为版本控制。

1 个答案:

答案 0 :(得分:9)

版本控制系统允许不同的用户编辑相同的文件,因此在合并时,它可以在合并时提供合理的体验。由多个开发人员签出同一文件的能力是允许团队提高工作效率的一个方面。当开发或维护同一产品的多个版本时,不可能完全防止冲突。

有许多其他指南through the ALM RAngers' guides。我强烈建议您和您的开发人员阅读此内容。

注意:

Visual Studio 2013提供了比旧版本更好的合并体验。像Semantic Merge这样的第三方工具通过解析合并的代码并应用一些额外的智能逻辑来进一步改善体验,以防止冲突。

对于某些众所周知难以合并的文件,例如SSIS包,还有其他专业工具,例如BIDS Helper Smart Diff

您可以做的一些事情:

确保开发人员沟通

每天进行scrum(站立式会议)或能够在TFS中使用Team Rooms的团队可以发出意图信号,并让他人了解他们正在积极主动的事情。确保有可用的专用通信渠道,并且如果用户不在同一位置,则用户具有Team Rooms extension installed。通信可以防止许多此类问题,并且一旦发生此类合并问题,这是最佳解决方案。

让开发人员经常执行get-latest和check-in

虽然没有服务器设置,但让开发人员接受有关分支,合并和一般源代码控制模式的培训可以提供很多帮助。如果用户定期检查传入的更改(获取最新信息)并在他对代码相对自信时(例如在使用TDD后第一次测试通过后)立即签入,则冲突的可能性会大大降低。

传入变化镜头

Codelens has been updated with a new Lens as one of the updates that was released after RTM。镜头需要将客户端和服务器升级到至少更新2和至少Visual Studio 2013 Ultimate Update 2.建议您在开始应用更新时始终保持最新状态,因此我建议您安装更新4.

虽然Code Lens是Ultimate功能,但随着Visual Studio 2015的发布,它将被移入Professional。

使用独家结账

如果用户使用Checkout and lock option签出文件,他们可以通知其他用户该文件正在发生重大变化。此功能要求所有用户的工作区类型都设置为“服务器工作区”。如果本地工作空间断开连接,则忽略Lock标志。虽然单个用户始终可以覆盖其工作区类型,但可以设置default workspace type at the collection level

禁用单个文件类型的合并和多个签出

更好的解决方案是标记难以合并的文件类型,具有大量XML和GUID的旧样式SSIS包在这里是合适的候选者。 Open the Source Control settings and add the extensions of "bad files".此设置部分适用于Visual Studio,无论工作区设置如何(Visual Studio将仅提供 Take Local Take Server ,并且不会提供合并。< / p>

禁用多个结帐

可以设置项目的源代码控制选项not allow "Multiple Checkouts",这将在签出文件时自动获取锁定。不建议启用此功能,因为它在Visual Studio中工作时引入了许多令人沮丧的事情(最重要的是,在添加任何文件时,必须获取项目文件的锁定)。与Exclusive Checkout一样,这要求所有用户都使用服务器工作区。

由于此功能可以防止任何文件被多人检出,因此通常会尝试以很大的力量来解决此问题。只有在您的开发人员陷入高频率的情况下,您才可以在接受培训时暂时启用此功能。