颠覆在线项目

时间:2010-10-07 09:49:37

标签: svn post-commit

我已经开始使用subversion来跟踪 - 并且能够逆转 - 与我们的开发和维护相关的网站更改。喜欢它提供的这种安全感!

我想知道是否有一种工具/方法能够自动化“实时”网站和subversion存储库之间的同步。能够将错误补丁提交到存储库和实时版本会很棒(现在我通过ftp手动上传更正的文件,然后将其提交到subversion存储库)。

我确定这必须存在于某个地方,但名称是什么?它需要什么设置?

感谢您的反馈, 甲

3 个答案:

答案 0 :(得分:3)

您可以创建一个post-commit hook,将您的存储库以最新版本导出到您的网络服务器目录:

#!/bin/sh

# Delete Old site
rm -R /var/www/website

# Export Repository
svn export --force file:///var/svn/website /var/www/website

# Make sure Apache Owns the website
chown -R www-data:www-data /var/www/website 

(信用到this forum thread)

将此保存在名为post-commit的文件中,位于存储库的hooks目录中,并使其可执行。

如果存储库和网站不在同一台服务器上,您将要在临时目录中导出,然后通过ftp或scp

推送它

编辑:发现这个可以完成工作的perl模块:SVN::Notify::Mirror

答案 1 :(得分:2)

基本上你可以使用svn repository hooks,尤其是post-commit挂钩。

答案 2 :(得分:1)

  1. 通过执行svn在您的网络服务器中创建存储库/网站的工作副本(本地副本) 查看。
  2. 您可以在cron / scheduler中设置任务(取决于linux / windows)。任务可以做到 在您的工作副本中更新svn。这可以每隔几分钟/小时完成,具体取决于您提交的频率。
  3. 指示您的网络服务器不要显示.svn dirs。在apache的情况下,你可以在httpd.conf中包含以下行(在IIS中也应该有一种方法,如果你需要这个用于windows,请告诉我)
  4. <DirectoryMatch \.svn>
       Order allow, deny
       Deny from all
    </DirectoryMatch>
    
    AliasMatch \.svn /non-existant-page