自动更新SVN提交网站?

假设我们使用Subversion(SVN)pipe理一个网站http://example.com及其较新的testing版本http://new.example.com 。

以下是一个好主意:

  • 每当STABLE分支更新时自动更新站点( http://example.com );
  • HEAD分支更新时自动更新testing站点( http://new.example.com )。

如果是,那么哪个软件用来更新网站? rsync的? 究竟在SVNconfiguration中写什么?

“使用Subversionpipe理站点”太常见,不太清晰。 你如何pipe理?

  • 工作副本在本地的开发盒,在一些特殊的主机和网站的仓库是未版本化的文件,导致回购的结果
  • 网站是存储库的附加“仅更新”工作副本

任何状况之下:

  • 双层(DEV和PROD空间)开发是被广泛使用的方法
  • DEV 可能会反映中继线的状态(无需额外的分支和合并到分支动作),具体取决于您的工作stream程
  • 一个开发团队与非托pipe自动更新共享的DEV空间有严重的缺点 – 愚蠢的后更新钩变化的情况下,开发人员提交后的testing可以被另一个开发人员提交

回答“哪个软件用来更新网站?” 取决于问题“如何pipe理网站”和“可以使用哪些访问方法来更新网站”的问题。 因为他们(软件和方法)可以

  • svn up
  • SCP
  • FTP
  • rsync的

和或多或less复杂的提交后的钩子

编辑

在未版本化树的情况下,你可以在后提交钩子使用相同的主机回购

  • 完全导出repo-tree: svn export file:///<PATH-TO-REPO> <TEMP-DIR> & mv -r <TEMP-DIR> <SITE-ROOT>

要么

  • 仅导出修订版本中已更改的文件: svnlook changed为您提供了具有相对path的已更改文件的列表,您必须将其收集并复制到正确的目的地。 样品

>svnlook.exe -r 24 changed .

U trunk/Hello.de.txt

U trunk/Hello.en.txt

U trunk/Hello.fr.txt

你必须处理状态(第一列)A | U(增加/更新),也许D也(删除)

每个提交的目标(在处理文件之前进行预先检查)可以通过svnlook dirs-changed进行validation。 与上例中的修订相同

 >svnlook.exe -r 24 dirs-changed . trunk/