题
我正在将 Subversion 引入我们的网上商店。我希望通过 FTP 将签入的文件上传到服务器(当他们习惯 Subversion 时,通过 SFTP)。这些文件被发送到候选版本页面以进行测试。可以调用脚本将文件移至生产环境。
我的问题是这样的:如何通过 Subversion 将文件传输到服务器?我可以添加一个脚本来在签入文件时进行传输吗?
解决方案
如果您可以通过 shell 访问您的服务器,并且在其上安装了 SVN(或者能够安装 SVN),那么您最好的选择可能就是完全绕过 FTP。
我们如何部署我们的应用程序(简化)
- 开发人员编写代码并签入trunk
- 定期,当主干稳定时,我们会对其进行快照作为标签
- 在服务器上,svn checkout 标签
如果需要对服务器(或直接在实时服务器本身)进行任何更改,则使用 subversion 同步代码很简单
其他提示
您想要构建一个使用 SubVersion 中的提交后挂钩的脚本。您可以从存储库导出脚本,然后通过 FTP 传输到服务器,或者您可以从存储库检出到服务器上的工作目录,并在提交后挂钩脚本中的服务器工作目录上调用“svn update” 。
我认为您应该使用 svn export 而不是 svn checkout 进行部署,这样您就不会让那些 .svn 目录弄乱您的生产备份作业。svn 导出是一个“干净”的结帐。
我还会创建一个脚本来为您处理这一切。根据代码的结构,您通常可以对目录进行版本控制,只需将符号链接更新到最新版本,这使得回滚更加容易。
你甚至可以使用类似的东西 卡皮斯特拉诺 自动化部署。不过,我赞同 CruiseControl 的建议。
我认为您正在寻找类似于与自动构建脚本集成的东西。我用过 巡航控制 对 ASP.Net 应用程序执行类似的操作。我不知道你的具体要求,但我敢打赌你可以让它做你想做的事。
您或许可以使用 SVN“挂钩”来执行此操作。基本上,您可以将服务器配置为在每次签入之前或之后运行脚本。这是相关部分的直接链接 网上书.
我同意猎户座的想法。如果您可以通过 shell 访问服务器,那么使用 Subversion 本身作为部署工具实际上非常容易。只需确保设置了一些 Web 服务器规则,以免意外暴露 .svn 目录。
svn2web 会在每次提交时将文件从 subversion 存储库 ftp 或 scp 到 Web 服务器。请参阅 来源锻造 项目详情。