跟大家讨论一个问题,觉得分少可以再加
我们在开发一个产品的时候怎么管理源代码才会更安全,维护工作量更小?
比方我们这个开发的产品被客户A定制,进行了特定功能的开发。而过段时间又销售给了客户B,并且客户B也有定制开发部分。如果以后还有客户C、D、E、F呢,怎么管理这些代码?
每个都建立一个分支然后管理分支?可如果觉得客户C提出的定制开发非常好,而且可以推广给其他客户以及后续客户,怎么将代码同步到其他分支呢?一个个工程对比,认为匹配?工作量增加了太多太多。不知道大家在平时遇到这样的问题怎么处理的。
------解决方案--------------------
我觉得模块能够做到非常高内聚低耦合,那可能就是改改工作流和UI方面的了。
------解决方案--------------------
我记得svn上可以进行分支开发和合并的,不知道对你有没有帮助
------解决方案--------------------
你说的是持续集成,有很多自动化工具,当然自动化工具需要人去搭建,需要有过程培训。如果做得好可以做的很好,如果做的 不好也会做的很糟。 你想问的不会是简单的SVN分支管理吧
------解决方案--------------------
过来学习的,没用过,听听大牛的意见
------解决方案--------------------
像你说的这种情况最好就是分支管理,同时将比较稳定或者说各分支间差异不大的部分抽离出来单独管理(或则组件化),这样个性化又得到保证,同时想在分支间整合一部分功能也相对容易。
------解决方案--------------------
没用svn用的git,像你的需求肯定是不同的分支,
可以有个common分支是大家都需要有的功能,比如可以用master,其他每个version一个分支,如果是大家都需要的功能要在common里完成然后merge到各个分支
------解决方案--------------------
------解决方案--------------------
如果想将C中已有的feature用到其他的分支可以生成一个patch,然后再在想使用这些feature的分支里apply这个patch
------解决方案--------------------
我基本同意【yktd26】的说法。
如果已经用了svn的分支管理,那么其实你现在的问题不是技术问题,而是需求控制和管理的问题。
需求和版本一定要做好同步控制。
我的经验一般控制好2点:
1、需求范围
如果确定要发布一个版本,不管是主线还是分支,一定要确定这个版本的需求范围,某个需求做就一定做,不做就一定不做。
2、发布时间
确定好某个版本的发布时间,不要轻易改,提前还好,如果到时需求做不完,宁可减少需求。如果需求不能减少,宁可延迟也不能轻易发布。
可能我上面说的似乎和楼主的要求关系不大,其实,关于版本合并本身没有什么好办法,就是抽取共性,舍弃个性!
------解决方案--------------------
版本管理工具只是一方面,是在业务模型设计合理的前提下。
对于楼主说的“尤其是牵扯到公共模块的个性定制更是头疼”,这其实是业务模型的设计问题。
所以说,与其是问代码管理,不如说是系统设计模型的问题。
虽然还是存在一些共性经验,但脱离具体实际谈还是不太靠谱。
------解决方案--------------------
千万不要去试验SVN的所谓分支、合并等等无用的技术。
唯一的办法就是抽取共性的包,不停的重构代码,为每个客户实现一个定制的版本。
记住,代码管理没有捷径,只能不停的重构。
------解决方案--------------------
12楼和13楼说的都不错。
------解决方案--------------------
CVS VSS 想节约成本 的就找个人专门管。。不过问题会很多
------解决方案--------------------
------解决方案--------------------
就是低耦合 全体模块化 小内核 实现积木一样
------解决方案--------------------
对,SVN
------解决方案--------------------
用SVN吧。