我已经使用源代码控制几年了(如果算上 Source Safe 年数),但我绝不是专家。我们目前使用的是旧版本的 Sourcegear Vault。我们的团队目前使用签出和锁定模型。我宁愿切换到更新和合并模型,但需要说服其他开发人员。
开发人员(不是我)设置为签出和锁定的原因是由于文件叛徒。我们公司与一家咨询公司合作完成我们的大部分开发工作。几年前,早在我来到这里之前,他们就为更新和合并设置了源代码控制。顾问去check in,却遇到了合并错误。然后他们选择在断开连接的模式下工作数月。当终于到了测试项目的时候,出现了大量的错误,并且发现代码库有很大的不同。数周的工作最终不得不重做。所以他们去检查并锁定作为解决方案。
我不喜欢签出和锁定,因为这让 2 个人或更多人很难同时在同一个项目中工作。每当您添加任何类型的新文件或更改文件名时,源代码管理都会检查 .csproj 文件。这可以防止任何其他开发人员添加/重命名文件。
我考虑将.csproj
文件设为可合并,但 Sourcegear 网站说这是一个坏主意,因为 csproj 是 IDE 自动生成的,并且您不能保证两个不同的 VS 生成的文件会生成相同的代码。
我的朋友(另一位开发人员)告诉我,解决方案是立即签入您的项目。对我来说,问题在于我可能有一个无法构建的本地副本,并且可能需要一些时间来构建。我可能需要几个小时才能使构建工作,这意味着在此期间,没有其他人能够创建和重命名文件。
我反驳说正确的解决方案是切换到可合并模型。我对“叛徒文件”问题的回答是,这是程序员纪律不佳的问题,您不应该使用较弱的程序员选择来解决纪律不佳的问题。相反,您应该采取行动来解决程序员缺乏纪律的问题。
那么谁是对的呢?签入 - 签出叛徒文件问题的合法答案吗?还是这个.csproj
问题对多个开发人员来说太麻烦了?还是 Sourcegear 错了,应该可以将csproj
文件设置为更新和合并?