【问题标题】:subversion for online projects颠覆在线项目
【发布时间】:2010-10-07 09:49:36
【问题描述】:

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

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

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

感谢您的反馈, A.

【问题讨论】:

  • 您能重新接受答案吗,上周有数据丢失导致答案不被接受?非常感谢!

标签: svn post-commit


【解决方案1】:

您可以创建一个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.5 吉格。我宁愿让它只更新已更改的内容。
  • 没有强制性,这只是一个你可以适应的例子!您可以从临时工作副本进行 svn 更新,并使用 .svn 排除将您的网站 rync 到您的网站
  • 不客气!昨天的网站问题取消了你的接受,你能重新接受吗?谢谢
【解决方案2】:

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

【讨论】:

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

AliasMatch \.svn /non-existant-page

【讨论】:

  • 有趣的方法,使用 cronjob 定期同步。谢谢!
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多