2

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

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

我确定这一定存在于某处,但以哪个名称存在?它需要什么设置?

谢谢你的反馈,A。

4

3 回答 3

3

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

#!/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 

(此论坛主题的学分)

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

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

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

于 2010-10-07T10:03:16.727 回答
2

基本上你可以用svn repository hooks来做到这一点,尤其是post-commithook。

于 2010-10-07T09:52:56.897 回答
1
  1. 通过执行 svn checkout 在您的网络服务器中创建存储库/网站的工作副本(本地副本)。
  2. 您可以在 cron/scheduler 中设置任务(取决于 linux/windows)。该任务可以在您的工作副本中执行 svn 更新。这可以每隔几分钟/小时完成一次,具体取决于您的提交频率。
  3. 指示您的网络服务器不显示 .svn 目录。如果是 apache,您可以在 httpd.conf 中包含以下几行(IIS 中也应该有一种方法,如果您在 windows 上需要它,请告诉我)
<DirectoryMatch \.svn>
   Order allow, deny
   Deny from all
</DirectoryMatch>

AliasMatch \.svn /non-existant-page
于 2010-10-07T11:32:56.580 回答