颠覆和网站开发
我正在将Subversion引入我们的网上商店。我想将签入的文件通过FTP(以及它们通过SFTP应用于Subversion)上传到服务器中。这些文件将发送到候选发布页面以进行测试。可以调用脚本将文件移入生产环境。
我的问题是:如何通过Subversion将文件传输到服务器?我可以添加一个脚本,当签入文件时执行传输吗?
解决方案
回答
我认为我们正在寻找的是与自动构建脚本集成的东西。我已经使用CruiseControl对ASP.Net应用程序执行了类似的操作。我不知道确切要求,但我敢打赌,我们可以让它做我们想要的。
回答
提交后脚本对此很有用。本质上,每次提交都会在事件之后调用脚本,我们可以使用该脚本将svn导出到任何地方。
一篇有趣的文章展示了如何做到这一点,以及展示了如何将钩子脚本与Subversion一起使用。
回答
我们可能可以使用SVN"钩子"来执行此操作。基本上,我们可以将服务器配置为在每次签入之前或者之后运行脚本。这是到在线书相关部分的直接链接。
回答
我们要构建一个脚本,该脚本使用SubVersion中的post commit钩子。我们可以从存储库中导出脚本,然后通过FTP传输到服务器,也可以从存储库中签出到服务器上的工作目录,然后在提交后的挂接脚本中在服务器工作目录上调用" svn update" 。
Subversion常见问题解答中有更多信息
回答
如果我们具有对服务器的外壳访问权限,并且在服务器上安装了SVN(或者能够安装SVN),那么最好的选择就是完全绕过FTP。
(简化)我们部署应用程序的方式
- 开发人员编写代码并将其检入主干
- 定期在中继稳定后,将其快照作为标签
- 在服务器上,svn签出标签
如果需要对服务器进行任何更改(或者直接在实时服务器本身上进行更改),则可以使用subversion来同步代码,这很简单。
回答
我支持猎户座的想法。如果我们具有对服务器的Shell访问权限,则实际上可以非常轻松地将Subversion本身用作部署工具。只需确保已设置一些Web服务器规则,以免意外泄露.svn目录。
回答
我认为我们可能应该使用svn export而不是svn checkout进行部署,因此我们不会因为那些.svn目录而使生产备份工作变得混乱。 svn export是一个"干净"的结帐。
我还将创建一个脚本来为我们处理所有这一切。根据代码的结构方式,我们通常可以对目录进行版本控制,而只需将符号链接更新为最新版本,这使回滚更加容易。
我们甚至可以使用Capistrano之类的工具来自动化部署。不过,我支持CruiseControl的建议。
回答
每次提交时,svn2web会将ftp或者scp文件从Subversion存储库传送到Web服务器。有关详细信息,请参见SourceForge项目。