最近我开始在我的开发工作流程中加入良好实践,因此我拆分了开发服务器和生产服务器。我还使用Subversion(Tortoise SVN)合并了一个版本控制系统。
现在我遇到了将生产服务器(Apache共享主机)与本地计算机上最后一个开发版本的文件同步的问题。
之前我没有遇到此问题,因为我通过Filezilla直接处理服务器文件。但是现在我不知道如何以有效的方式传输文件以及这方面的优秀实践。
我读过一些关于Ant和Phing的内容,但我不确定这是否适合我,或者是不必要的复杂性。
答案 0 :(得分:2)
Rsync是一个跨平台工具,旨在帮助处理此类情况;我曾多次将它用于类似用途。这DevShed tutorial可能有所帮助。
答案 1 :(得分:1)
我认为您不想“自动化”它,而是建立对部署和集成过程的控制。我一般喜欢SVN,但它有一些错误,我遇到的一个问题是它不支持基线 - 如果你想要一个稳定的版本来推广到更高的环境,你需要建立你的存储库的物理分支同时继续推进trunk。
无论如何,你应该看看持续集成和Jenkins。这是一个相当广泛的主题,不能给出具体的答案。有许多ins,out,what-have-yous。取决于您的应用程序平台,组件,您是否有数据库更改,您是在处理外部Web服务还是第三方API等。
答案 2 :(得分:1)
可能有更多结构化解决方案,但使用Tortoise SVN,您只能导出文件夹树结构中版本之间更改的文件。然后,一如既往地上传到Filezilla。
看看: http://verysimple.com/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/
答案 3 :(得分:0)
旁注:
您必须打开有关工作流程和配置的更多详细信息 - 适用的解决方案取决于它。我在游戏中看到4个主要节点:Workplace,Repo Server,DEV,PROD,一些节点可能是统一的(1 + 2,2 + 3),可能有不同的工具集(你有SSH,Rsync,NFS,Subversion < DEV | PROD上的em>客户端。所有细节都很重要
在任何情况下 - Subversion存储库都有hooks这样的东西,在你的情况下post-commit hook(在每次提交后在Repository Server端执行)可能会被使用
如果此挂钩(任何代码,可以在无人参与模式下执行),您可以定义和实施任何规则,以便在任何条件下执行部署到任何目标。你必须只知道
Some links to scripts,它将受修订版(或修订版范围)影响的文件导出到无版本树