我正在寻找一种优化/改善我的同事和我处理应用程序的方式的好方法。
我们目前都在MacBook Pro(2016)上使用PhpStorm,我们网络中的Ubuntu服务器以及映射到SMB共享到我们机器的工作副本(我们有时编辑相同的文件,这使得这很不方便)。我们使用Git作为源代码控制,并且我们都有1个分支。
我们注意到通过网络共享使用PhpStorm的性能问题,我们的应用程序非常庞大,并且PhpStorm索引的所有内容都会使其冻结并始终感觉无响应。
我们正在寻找一种方法来改善我们的工作方式,简化应用程序的开发并消除我们对网络共享/工作副本组合的性能问题。
我们正在考虑在我们的机器上本地拥有一个工作副本,具有虚拟化的Web服务器(Vagrant)并且所有应用程序彼此分开运行。这将解决网络问题,但是如果我进行数据库更改,则会带来其他问题,这些更改也必须在我同事的工作副本上完成。
此外,我们一直在对相同的文件进行更改,我们最不希望的是每次进行更改时修复文件冲突,然而不得不拉动另一个开发人员在白天进行的每次提交,以及必须执行他们的数据库手动更改。
TL; DR,有3个开发人员处理1个应用程序的好方法。
答案 0 :(得分:4)
一个好的改进肯定会在你自己的应用程序本地副本上工作。如您所述,这将解决性能问题,但会为您提供有关数据库更新的问题。
管理数据库更新的一种方法是为每个数据库架构更改使用迁移文件。假设您进行了更改,将此更改添加到您添加到git存储库的新迁移文件中。拥有这些文件后,每个人都可以在其本地开发数据库之上应用所有迁移,以使其数据库保持最新。它还使测试变得非常简单,因为您可以随时重置数据库并再次应用迁移。
您可以查看其他人如何应用此功能。有后端框架支持开箱即用(例如PHP的Laravel)。
答案 1 :(得分:2)
我能想到的一个解决方案可能是使用像git这样的版本控制系统。听起来像你想要同时处理同一个项目和可能同一个功能。
为了最大限度地减少合并冲突,我建议创建一个dev分支,对于每个功能,它应该从dev分支分支并被隔离,直到有更新(某人合并或您完成了该功能并合并)。然后,其他开发人员可以从开发中获取这些更改并继续其功能。
如果问题基于环境,您可以使用JetBrains ides中的docker功能创建一个可以使用的公共环境。
答案 2 :(得分:1)
https://www.atlassian.com/git/tutorials/comparing-workflows
注意它所说的部分:“开发人员首先克隆中央存储库。在他们自己的项目本地副本中,他们编辑文件并像使用SVN一样提交更改;但是,这些新提交存储在本地 - 它们与中央存储库完全隔离。这使得开发人员可以推迟上游同步,直到他们处于方便的断点。“
一旦你明白了这一点,我想其余的就是。
答案 3 :(得分:0)
在对原始回复添加评论后,我认为必须提供答案:
这是我名单上的首要任务。
答案 4 :(得分:0)
虽然我个人更喜欢使用Git及其分支,但PhpStorm的the deployment feature可能是您的解决方案。因此,您可以拥有一个将从外部资源更新的本地副本,而不是使用网络绑定共享。以下是关于如何自动更新的the configuration tutorial和the tutorial。
答案 5 :(得分:0)
您应该将GIT存储库存储在集中位置,例如在Github或您的一个本地服务器中。任何开发人员都可以从/向中央存储库提取/推送更改,并使用本地副本(无SMB网络)。
考虑使用Docker容器。这将允许您拥有完全相同的开发环境。
可以使用数据库迁移完成数据库更改。请参阅此库doctrine/migrations。