从开发到实时服务器上载一些特定功能,但不是全部已开发功能

|| 这或多或少与项目管理以及每个开发人员有关。当您在开发站点上开发了许多功能并且所有功能都经过客户端测试并且可以投入使用时,您如何处理这种情况。 这些功能在通用文件中有一些代码。一个PHP文件具有一项功能以及另一项功能的代码。 但是客户会要求您在10个或15个中仅上载2个功能。如果直接上载该文件,则文件很常见,这会导致错误问题,因为它们具有其他功能的代码。如果您上传所有更新的文件,那么所有功能都会生效。 一种可能的方法是返回并从公用文件中注释掉该功能,该功能目前暂时不需要。但是有可能忘记在其他任何地方发表评论。 这也不是一个好方法,最后客户会说出发生在开发服务器上的所有事情都经过了什么测试,以及为什么在实时服务器上引入了这些错误和错误。 这将减少对开发人员的信任。 我多次遇到此问题,因此找不到任何避免这些问题的好方法。所以我认为你们也面临或面临这个问题。 我认为版本控制系统可以在这里提供帮助。 你们如何处理呢? 您可以分享想法吗?     
已邀请:
您正在描述的情况不可能理智地处理。我不认为有可能解决这种情况,但真正的问题是您为什么要这样做? 您描述的方案存在很多问题,但核心问题确实是这个。您正在测试一件事,然后部署另一件事。您在问题中承认变化的相互联系。实际上,它比您描述的还要困难。当您尝试部署经过测试的解决方案的一部分时,您根本不知道系统的行为。为什么要全部测试? 我看到的唯一明智的解决方案是在沙盒环境中演示新功能。但是,请仅对将要上线的测试内容进行测试。因此,在您的示例中,其中一个或两个功能已在测试中,准备好进行正式发布,而其他功能则锁定在沙箱中。 这将导致下一个问题,即管理您的源代码。我看不到任何明智的策略来管理代码库中的功能。即使在我所知的最灵活的系统(Perforce)下,当您尝试将内容移入或移出时,任何分支策略都需要对合并进行糟糕的解决。 我已经看到了这种情况,并相信我会变得非常难看。 我建议您提出一个更好的解决方案。与您的客户交谈并更改处理方式。这对您会更好,从长远来看对他们也会更好。     
解决方案可能是使用VCS提供的廉价版本分支,例如Git或Mercurial。该项目将包含许多要素分支,这些要素分支用于开发所述要素,并建立分支,在该分支中将合并要素分支并进行临时修复。当构建分支准备好进行测试时,将对其进行测试,并根据需要进行修复,然后将构建分支运送到生产平台。 验证功能部件后,可以将build分支合并到其余的功能分支中,以便开发中的分支可以集成“正式”更改。 综上所述,该应用程序是根据需要从现有功能分支中自定义构建的。     
在代码级别上进行管理的一种合理而合理的方法是将每个功能隔离到一个插件中。然后,您可以通过简单地启用或禁用相应的插件来按需添加/删除功能。 但是此解决方案具有一定的成本: 是时候为您的应用开发和测试插件引擎了 您需要测试将要部署的每个插件配置(启用的插件集及其版本)。否则,就有可能与该特定设备不兼容,并且最终用户将首先看到最终的崩溃,数据丢失或其他恐怖现象 用最少的时间相互依赖插件来浪费时间。 仅当您有许多具有不同需求的客户时,这通常是值得的。对于您的情况,我建议向您的客户解释单独启用功能的成本,以查看他们是否真的需要这个功能。他们很可能不会     

要回复问题请先登录注册