我正在将 Subversion 引入我们的网上商店。我希望通过 FTP 将签入的文件上传到服务器(并且当它们使用 Subversion 时,通过 SFTP)。这些文件被发送到发布候选页面以进行测试。可以调用脚本将文件移动到生产环境中。
我的问题是:如何通过 Subversion 将文件传输到服务器?是否有我可以添加的脚本在文件签入时进行传输?
您想构建一个使用 SubVersion 中的提交后挂钩的脚本。您可以将脚本从存储库导出,然后通过 FTP 传输到服务器,或者您可以从存储库签出到服务器上的工作目录,然后在提交后挂钩脚本中的服务器工作目录上调用“svn update” .
如果您对服务器具有 shell 访问权限,并且在其上安装了 SVN(或能够安装 SVN),那么您最好的选择可能就是完全绕过 FTP。
我们如何部署我们的应用程序是(简化的)
如果需要对服务器进行任何更改(或直接在实时服务器本身上),使用颠覆来同步代码是微不足道的
我认为您可能应该使用 svn export 而不是 svn checkout 进行部署,这样您就不会让那些 .svn 目录混淆您的生产备份工作。svn export 是一个“干净”的结帐。
我还会创建一个脚本来为你处理这一切。根据代码的结构,您通常可以对目录进行版本控制,只需将符号链接更新到最新版本,这使得回滚更容易。
您甚至可以使用Capistrano之类的工具来自动化部署。不过,我支持 CruiseControl 的建议。
我认为您正在寻找的是与自动构建脚本集成的东西。我使用CruiseControl对 ASP.Net 应用程序进行了类似的操作。我不知道你的确切要求,但我敢打赌你可以让它做你想做的事。
您可能可以使用 SVN“钩子”来执行此操作。基本上,您可以将服务器配置为在每次签入之前或之后运行脚本。这是在线书籍相关部分的直接链接。
我赞同 Orion 的想法。如果您拥有对服务器的 shell 访问权限,那么使用 Subversion 本身作为部署工具实际上非常容易。只需确保设置了一些 Web 服务器规则,以免意外暴露 .svn 目录。
svn2web 将在每次提交时从 subversion 存储库 ftp 或 scp 文件到 Web 服务器。有关详细信息,请参阅SourceForge项目。