这是一个理论问题,我只想为自己说清楚。
假设您从客户处获得了一项重要任务。让它成为一个带有铃声和口哨声的自定义浏览器,或者带有大量客户服务的自定义Android ROM。
经过一些研究,您发现可以使用一些开源项目作为地下室,但客户的愿望清单要求您进行大量更改,包括添加或删除大量代码,从项目中删除一些模块,更改架构一些组件,重写项目核心内容等等。
现在假设您已成功实施了所有内容,客户向您提供了资金并提出了将代码库与当前父项目状态同步以进行额外付款的要约。
现在的问题是:在以下情况下,将代码库与父代同步的最佳方法是什么:
git merge
会产生很多冲突,解决它们类似于从头开始重写所有内容如果无法进行快速合并,那么在架构方面避免这些情况的最佳方法是什么?
答案 0 :(得分:1)
回应你的评论,大型项目分叉其他大项目:
(1)尝试真的很难保持他们的变化模块化并超出父应用程序的核心功能
(2)定期进行合并或重新定位的过程。
无论从逻辑角度来看,您都必须解决所有冲突,而且可能会花费昂贵且耗时。
答案 1 :(得分:1)
理想情况下,当您使用开源项目作为基础时,您应该选择具有出色扩展机制的项目并与其保持同步。听起来这个项目已达到合并可能非常困难的程度。除了进行合并之外,另一个选择是使用git启动一个新项目来进行源代码控制,一个适合该语言的构建工具和一个对开源项目的依赖。一旦你有了这个设置,慢慢添加你建立的现有功能,但这次是以可扩展的方式,你仍然可以重用你的旧代码。随时编写大量单元测试,并经常更新开源项目的版本。
如果您打算尝试合并地狱,我建议您尝试分阶段从开源项目中删除更改,而不是使用不远离什么的构建获得最新的开始你用作基础并逐步更新,从而修复重大变化。根据您的技能水平,这可能是更多的工作,并且仍然使您处于具有未正确设置依赖项的项目的位置。