我正在将 Subversion 引入我们的网上商店。我希望通过 FTP 将签入的文件上传到服务器(当他们习惯 Subversion 时,通过 SFTP)。这些文件被发送到候选版本页面以进行测试。可以调用脚本将文件移至生产环境。

我的问题是这样的:如何通过 Subversion 将文件传输到服务器?我可以添加一个脚本来在签入文件时进行传输吗?

有帮助吗?

解决方案

如果您可以通过 shell 访问您的服务器,并且在其上安装了 SVN(或者能够安装 SVN),那么您最好的选择可能就是完全绕过 FTP。

我们如何部署我们的应用程序(简化)

  • 开发人员编写代码并签入trunk
  • 定期,当主干稳定时,我们会对其进行快照作为标签
  • 在服务器上,svn checkout 标签

如果需要对服务器(或直接在实时服务器本身)进行任何更改,则使用 subversion 同步代码很简单

其他提示

您想要构建一个使用 SubVersion 中的提交后挂钩的脚本。您可以从存储库导出脚本,然后通过 FTP 传输到服务器,或者您可以从存储库检出到服务器上的工作目录,并在提交后挂钩脚本中的服务器工作目录上调用“svn update” 。

Subversion 常见问题解答中有更多信息

我认为您应该使用 svn export 而不是 svn checkout 进行部署,这样您就不会让那些 .svn 目录弄乱您的生产备份作业。svn 导出是一个“干净”的结帐。

我还会创建一个脚本来为您处理这一切。根据代码的结构,您通常可以对目录进行版本控制,只需将符号链接更新到最新版本,这使得回滚更加容易。

你甚至可以使用类似的东西 卡皮斯特拉诺 自动化部署。不过,我赞同 CruiseControl 的建议。

我认为您正在寻找类似于与自动构建脚本集成的东西。我用过 巡航控制 对 ASP.Net 应用程序执行类似的操作。我不知道你的具体要求,但我敢打赌你可以让它做你想做的事。

提交后脚本对此很有用。本质上,每次提交都会在事件之后调用一个脚本,您可以使用它来执行 svn 导出到任何地方。

一个有趣的 文章 展示了如何做到这一点,并且 显示挂钩脚本如何与 subversion 一起使用

您或许可以使用 SVN“挂钩”来执行此操作。基本上,您可以将服务器配置为在每次签入之前或之后运行脚本。这是相关部分的直接链接 网上书.

我同意猎户座的想法。如果您可以通过 shell 访问服务器,那么使用 Subversion 本身作为部署工具实际上非常容易。只需确保设置了一些 Web 服务器规则,以免意外暴露 .svn 目录。

svn2web 会在每次提交时将文件从 subversion 存储库 ftp 或 scp 到 Web 服务器。请参阅 来源锻造 项目详情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top