如何将新的/更改的文件从开发服务器上传到生产服务器?

时间:2012-12-11 16:13:32

标签: apache svn ftp

最近我开始在我的开发工作流程中加入良好实践,因此我拆分了开发服务器和生产服务器。我还使用Subversion(Tortoise SVN)合并了一个版本控制系统。

现在我遇到了将生产服务器(Apache共享主机)与本地计算机上最后一个开发版本的文件同步的问题。

之前我没有遇到此问题,因为我通过Filezilla直接处理服务器文件。但是现在我不知道如何以有效的方式传输文件以及这方面的优秀实践。

我读过一些关于Ant和Phing的内容,但我不确定这是否适合我,或者是不必要的复杂性。

4 个答案:

答案 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/

  • 使用TortoiseSVN,右键单击您的工作文件夹并选择 TortoiseSVN菜单中的“显示日志”。
  • 单击上次发布的修订
  • Ctrl +单击HEAD修订版(或任何您想要的修订版) 释放)以便旧版本和新修订版本都是 突出显示。
  • 右键单击任一突出显示的修订版本并选择 “比较修订。”这将打开一个列出所有内容的对话窗口 新/修改过的文件。
  • 从此列表中选择所有文件(Ctrl + a),然后右键单击 突出显示的文件,然后选择“将选择导出到...”

答案 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端执行)可能会被使用

如果此挂钩(任何代码,可以在无人参与模式下执行),您可以定义和实施任何规则,以便在任何条件下执行部署到任何目标。你必须只知道

  • 将使用哪种传输方式传输文件
  • 您在服务器上的网站空间是什么(只是干净的无版本文件的工作副本 - 这两个解决方案都有pro和contra集合) - 它将定义你必须在钩子中实现哪个部署策略(“export”或“update”)

Some links to scripts,它将受修订版(或修订版范围)影响的文件导出到无版本树