2

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

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

之前我没有这个问题,因为我通过 Filezilla 直接处理服务器文件。但是现在我不知道如何以有效的方式传输文件以及这方面的良好做法是什么。

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

4

4 回答 4

2

Rsync是一个跨平台工具,旨在帮助解决此类情况;我曾多次将其用于类似目的。这个DevShed 教程可能会有所帮助。

于 2012-12-11T16:52:54.450 回答
1

我不认为你想“自动化”它,而是建立对你的部署和集成过程的控制。我通常喜欢 SVN,但它有一些错误,我遇到的一个问题是它不支持基线 - 相反,如果你想拥有一个稳定的版本来提升到更高的环境,你需要创建存储库的物理分支同时继续推进后备箱

无论如何,你应该看看持续集成和Jenkins。这是一个相当广泛的话题,无法给出具体的答案。有很多来龙去脉,你有什么。取决于您的应用程序平台、组件、您是否有数据库更改、您是在处理外部 Web 服务还是第 3 方 API 等。

于 2012-12-11T16:34:29.300 回答
1

也许有更多结构化的解决方案,但使用 Tortoise SVN,您只能导出文件夹树结构中版本之间更改的文件。然后,像往常一样在 Filezilla 中上传。

看看:http: //verysimple.com/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/

  • 使用 TortoiseSVN,右键单击您的工作文件夹并从 TortoiseSVN 菜单中选择“显示日志”。
  • 单击上次发布的修订
  • Ctrl+单击 HEAD 修订版(或您要发布的任何修订版),以便突出显示旧修订版和新修订版。
  • 右键单击任一突出显示的修订,然后选择“比较修订”。这将打开一个对话框窗口,列出所有新的/修改的文件。
  • 从此列表中选择所有文件 (Ctrl+a),然后右键单击突出显示的文件并选择“将选择导出到...”</li>
于 2012-12-11T21:42:23.550 回答
0

边注:

您必须打开有关您的工作流程和配置的更多详细信息 - 适用的解决方案取决于它。我看到游戏中有 4 个主要节点:Workplace、Repo Server、DEV、PROD,一些节点可能是联合的(1+2、2+3),可能有不同的工具集(你有 SSH、Rsync、NFS、Subversion客户端吗?在开发|产品上)。所有细节都很重要

在任何情况下 - Subversion 存储库都有这样的东西,例如hooks,在您的情况下,可以使用post-commit 钩子(在每次提交后在 Repository Server 端执行)

如果这个钩子(任何代码,可以在无人值守模式下执行),您可以定义和实现任何规则以在任何条件下执行部署到任何目标。你必须只知道

  • 将使用哪种传输方式传输文件
  • 您在服务器上的网络空间是什么(仅干净的未版本化文件的工作副本 - 两种解决方案都有赞成和反对集) - 它将定义您必须在挂钩中实施的部署策略(“导出”或“更新”)

一些指向脚本的链接,这些链接将受修订(或修订范围)影响的文件导出到未版本化的树中

于 2012-12-12T00:44:36.197 回答