不同的开发人员签入涉及相同文件的代码,或者不同的分支可能会被合并。我是管理员方面的 TFS 新手,但我知道如何对代码进行基本的签入。如何避免管理员端的代码冲突?我们使用 Microsoft Team Foundation 服务器作为版本控制。
1 回答
版本控制系统允许不同的用户编辑相同的文件,以便在合并时提供合理的合并体验。多个开发人员签出同一个文件的能力是让团队变得高效的原因之一。当开发或维护同一产品的多个版本时,不可能完全防止冲突。
ALM Rangers 指南中提供了许多额外的指导。我强烈建议您和您的开发人员阅读本文。
笔记:
Visual Studio 2013 提供比旧版本更好的合并体验。Semantic Merge 等第3 方工具通过解析正在合并的代码并应用一些额外的智能逻辑来防止冲突,进一步改善了体验。
对于某些众所周知的难以合并的文件,例如 SSIS 包,还有其他专业工具,例如BIDS Helper Smart Diff。
你可以做的一些事情:
确保开发人员进行沟通
进行每日例会(站立会议)或能够在 TFS 中使用 Team Room 的团队可以发出意图信号,并让其他人主动了解他们正在做的事情。确保有可用的专用通信渠道,并且用户安装了Team Rooms 扩展,以防他们不在同一地点。通信可以防止许多此类问题,并且是一旦发生此类合并问题的最佳解决方案。
让开发人员经常执行最新信息和签到
虽然没有针对此的服务器设置,但让您的开发人员接受关于分支、合并和通用源代码控制模式的培训会大有帮助。如果用户定期检查传入的更改(获取最新的)并在他对自己的代码相对有信心时立即签入(例如在使用 TDD 时第一次测试通过之后),那么发生冲突的可能性就会大大降低。
即将到来的变化镜头
作为 RTM 之后发布的更新之一,Codelens 已使用新 Lens 进行了更新。镜头要求客户端和服务器都至少升级到 Update 2 和 Visual Studio 2013 Ultimate Update 2。建议您在开始应用更新时始终保持最新状态,因此我建议您安装更新4.
虽然 Code Lens 是一项 Ultimate 功能,但随着 Visual Studio 2015 的发布,它将移至 Professional。
使用独家结帐
如果用户使用“签出和锁定”选项签出文件,他们可以向其他用户发出文件正在发生重大更改的信号。此功能要求所有用户的工作空间类型都设置为“服务器工作空间”。鉴于本地工作空间的断开性质,忽略 Lock 标志。尽管单个用户始终可以覆盖其工作区类型,但可以在集合级别设置默认工作区类型。
禁用单个文件类型的合并和多次签出
更好的解决方案是标记难以合并的文件类型,带有大量 XML 和 GUID 的旧式 SSIS 包是一个很好的选择。打开源代码管理设置并添加“坏文件”的扩展名。无论工作区设置如何,此设置都部分适用于 Visual Studio(Visual Studio 将仅提供Take Local或Take Server不提供合并。
禁用多次结帐
可以将项目的源代码控制选项设置为不允许“多次签出”,这将在签出文件时自动获取锁定。不建议打开此功能,因为它在 Visual Studio 中工作时引入了很多令人沮丧的事情(最重要的是,在添加任何文件时,必须获得项目文件的锁定)。与独占结帐一样,这要求所有用户都使用服务器工作区。
由于此功能将防止任何文件被多人签出,因此它通常会尝试使用多种方式来解决此问题。只有在您的开发人员频繁搞砸的情况下,您才可以在他们接受培训时暂时启用此功能。