我工作的项目最近已经从一个可怕的陈旧的版本控制系统切换到Subversion。几年前我觉得我对Subversion有相当好的理解,但是一旦我了解了Mercurial,我就很快忘记了Subversion。
我的问题针对那些在Subversion的同一分支上与大量(15+)开发人员合作的人。
假设您结帐了存储库的rev N.您进行了一些更改然后提交。同时,其他开发人员已对其他文件进行了更改。您听说其他开发人员对子系统X的更改并决定您需要立即更新。您不希望更新整个工作副本,因为它会引入各种各样的东西,然后您将不得不进行冗长的编译(C ++项目)。我看到的风险是开发人员只更新子系统X而没有意识到新代码依赖于子系统Y的最近更改。代码编译,但在运行时崩溃。
你是如何处理的?
答案 0 :(得分:1)
由于您已完成所有正在进行的工作,因此您没有理由不使用整个最新版本更新副本。冗长的编译是大型项目价格的一部分。编译时间几乎总是小于尝试确定是否有错误所花费的时间,或者是否存在一些模糊的不兼容性,因为您没有检查所有内容。
该项目已将编译分发到组中的所有工作站。由于我们有大约15台计算机用于完成任务,这意味着通常需要6小时左右的时间才能完成约25分钟。
答案 1 :(得分:0)
跟踪依赖关系的责任是介绍它的develloper。 在这种情况下,develloper X应确保更改与其他子系统的当前版本一起使用。或者至少记录它适用的版本。
我看到帮助发展者解决这个问题的方法是。
这显然不能解决长编译时间,但它有助于避免不必要的重建。 复杂的依赖图也表明设计有问题。重构代码以减少子系统之间的耦合可能是个好主意。