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

dot*_*ner 3 tfs tfvc

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

jes*_*ing 9

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

ALM RAngers指南提供了许多其他指导.我强烈建议您和您的开发人员阅读本文.

注意:

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

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

你可以做的一些事情:

确保开发人员沟通

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

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

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

传入变化镜头

Codelens已更新为新的镜头,作为RTM之后发布的更新之一.镜头需要将客户端和服务器升级到至少更新2和至少Visual Studio 2013 Ultimate Update 2.建议您在开始应用更新时始终保持最新状态,因此我建议您安装更新4.

虽然Code Lens是Ultimate功能,但随着Visual Studio 2015的发布,它将被移植到Professional中.

使用独家结账

如果用户使用Checkout和lock选项签出文件,他们可以通知其他用户该文件正在发生重大更改.此功能要求所有用户的工作区类型都设置为"服务器工作区".如果本地工作空间断开连接,则忽略Lock标志.虽然单个用户始终可以覆盖其工作区类型,但可以在集合级别设置默认工作区类型.

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

一个更好的解决方案是标记难以合并的文件类型,具有大量XML和GUID的旧样式SSIS包在这里是很好的候选者.打开"源代码管理"设置并添加"坏文件"的扩展名.无论工作区设置如何,此设置都部分应用于Visual Studio(Visual Studio将仅提供Take LocalTake Server不提供合并.

禁用多个结帐

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

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