9

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

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

4

8 回答 8

3

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

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

于 2008-08-18T03:54:54.020 回答
3

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

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

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

如果需要对服务器进行任何更改(或直接在实时服务器本身上),使用颠覆来同步代码是微不足道的

于 2008-08-18T03:57:18.930 回答
2

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

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

您甚至可以使用Capistrano之类的工具来自动化部署。不过,我支持 CruiseControl 的建议。

于 2008-08-18T04:56:25.347 回答
1

我认为您正在寻找的是与自动构建脚本集成的东西。我使用CruiseControl对 ASP.Net 应用程序进行了类似的操作。我不知道你的确切要求,但我敢打赌你可以让它做你想做的事。

于 2008-08-18T03:36:43.260 回答
1

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

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

于 2008-08-18T03:50:11.970 回答
1

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

于 2008-08-18T03:52:28.783 回答
0

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

于 2008-08-18T04:13:18.087 回答
0

svn2web 将在每次提交时从 subversion 存储库 ftp 或 scp 文件到 Web 服务器。有关详细信息,请参阅SourceForge项目。

于 2009-02-04T18:52:38.123 回答