我想避免出现这样的情况,即两个开发人员在不首先讨论它的情况下同时重构同一代码,可能是使用某种工具,也许是Eclipse插件。你能帮我吗?
我们拥有450万行代码,并在四大洲拥有20多个开发团队。
理想情况下,我希望前面提到的第二个开发人员注意到其他人正在处理同一段代码,并在修改任何内容之前先与第一个代码交谈。
您知道解决方案吗?
我想避免出现这样的情况,即两个开发人员在不首先讨论它的情况下同时重构同一代码,可能是使用某种工具,也许是Eclipse插件。你能帮我吗?
我们拥有450万行代码,并在四大洲拥有20多个开发团队。
理想情况下,我希望前面提到的第二个开发人员注意到其他人正在处理同一段代码,并在修改任何内容之前先与第一个代码交谈。
您知道解决方案吗?
Answers:
许多第二代源代码管理系统都使用连接的“签出”来工作,该签出通知服务器您打算修改文件。示例包括TFS,SourceGear Vault等。这样,您就可以从技术上满足您的要求。正如亚当·巴特勒(Adam Butler)指出的那样,这些类型的工具都有其自身的问题(无需进行冗长的辩论-对脱机工作的支持有限,并且通常会适得其反)。
我肯定会建议某种分层方法来分配重构工作。开发人员可以按逻辑分组为各个子团队,每个子团队负责代码的特定区域。根据您希望组建团队的方式,每个人都可以扮演“领导”角色,负责团队区域的高层设计。这种结构对于开发人员应该是众所周知的,并且应该简化用于重构的通信。我相信这种方法对于某些人来说似乎过于正式和落后,但是我认为让20多名开发人员使用“所有人免费”的方法来重构大型系统是更可取的。某些重构将在高层进行(例如,模块X如何与模块Y通信),在这种情况下,您将需要可以在适当级别拨打电话的人员。并非团队中的每个开发人员都应该做出体系结构决策,因此,无论哪种情况,即使有人选择不了解层次结构,也几乎会强加一个层次结构。
因此,基本上,有一些工具可以满足您提出的基本要求,但是没有任何一种工具可以代替适当的通信,并且只有少数人来驱动项目的总体架构。
有/曾经有版本控制系统使开发人员在可以编辑代码之前签出代码,但是这些系统都有自己的问题。更好的做法是让开发人员经常提交和更新。然后,一个开发人员可以将一个类标记为已弃用,然后提交,如果其他开发人员在开始重构之前进行更新,他们将看到意图。
技术不能解决社会问题。您需要让您的开发人员互相交谈并协调他们的工作。在拥有20个团队的情况下,一些结构和规则至关重要。您将希望通过技术解决方案为他们提供支持,但是以人为本。
如果您notice that someone else is working on the same piece of code and talk to the first one before modifying anything
按照说明离开了,则需要版本控制系统(CVS / SVN / GIT)。虽然我不确定,但是如果您也想包含它,则将需要一些高级的东西(可能是某种触发机制/一些自定义的东西)。
开发人员将文件锁定在源代码管理中应该可以轻松解决您的问题,但是我认为您可能会遇到更大的问题。
450万个LOC是一个巨大的沙箱,因此在一个经过精心设计和设计的解决方案中,您很少会遇到多个开发人员团队互相踩脚的情况。发生这种情况并非巧合,这说明应该考虑一些严重的潜在设计缺陷。
一些东西: