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