我们一直在与这个问题作斗争一段时间,而且似乎找不到能够满足开发人员生活更轻松的所有要求的完美解决方案.
现在我们有以下设置:
> Linux开发服务器(因为我们生产的所有东西都在linux上运行,它使用一些linux-specifix库)
> Windows桌面(办公室网络在Windows上)
>每个开发人员在开发服务器上都有一个主文件夹,其中设置了一个虚拟主机来运行他们的代码.使用Samba共享此文件夹.
> Zend Studio IDE设置为使用该位置(作为网络驱动器)来处理项目
>远程调试,以便能够在开发服务器上运行应用程序,并能够单步执行代码
所以我们遇到的主要问题是一切都很慢……
> Zend对项目编制索引很慢,因为它需要通过SMB传输相当多的文件(包括完整框架等外部文件).
>远程调试很慢,因为Zend studio需要获取文件,然后将其发送回服务器以运行它(运行“Local if available,else server”;否则断点不起作用)
> Tortoise SVN获取提交的文件状态很慢(命令行可以解决问题,但是用户友好性较差,特别是在合并时更复杂的事情,如冲突解决)
分支到具有多个服务器配置的任何解决方案都会带来一个问题,即在任何地方都可能存在不同的配置,这将带来额外的不确定性层以及可能的生产中的错误.
由于代码中的linux依赖性(如POSIX函数),因此无法在Windows下进行开发和调试.
那么组织如何解决这些问题呢?你使用什么样的设置?您面临哪些问题,以及如何解决这些问题?
解决方法:
在某些情况下有效的解决方案是:
>将代码放在本地磁盘上,运行Windows的物理计算机上
>此代码是您使用IDE修改的代码
>因此,IDE正在尽可能快地工作:每个文件都没有SMB访问权限.
>还有Linux服务器上的代码
>因此Apache运行速度很快:代码存在于服务器上
>使用某种同步机制,通过SMB共享将对Windows机器上的文件所做的每个修改推送到Linux服务器.
>使用Eclipse,FileSync plugin在SMB共享上做得很好.
>还可以使用WinSCP通过SSH连接保持远程和本地文件夹同步
好处 :
>所有本地业务都很快
>所有服务器操作都很快
缺点 :
>您必须始终使用确保同步的工具(例如,使用FileSync,一切都必须在Eclipse中完成 – 而在任何其他软件中都没有)
>注意:对于SVN,不需要使用Tortoise:有一些集成到Eclipse中的插件(例如Subversive)
>不确定调试
>直接在Linux机器上完成的修改可能不会(取决于解决方案)与Windows桌面同步.
尽管如此,最好(最快和最强大)的解决方案通常只使用一台计算机 – 在您的情况下运行Linux,而不是Windows.
>您的工具很可能在Linux下运行
>如果需要,可以在虚拟机中安装Windows,对于某些不在Linux上运行的软件
>它会鼓励团队中的每个人更好地了解Linux;当您的生产环境不是Windows时,这总是有用的;-)