2010-10-07 80 views
2

我已經開始使用Subversion來跟蹤 - 並且能夠扭轉 - 我們的網站與其開發和維護相關的變化。喜歡它提供的這種安全感!對在線項目的顛覆

我想知道是否會有一種工具/一種方式能夠實現「live」網站和Subversion版本庫之間的同步。能夠同時向存儲庫和實時版本提交錯誤補丁是非常好的(現在我通過ftp手動上傳糾正的文件,然後將其提交到Subversion存儲庫)。

我確定這個必須存在的地方,但在哪個名字?它需要什麼設置?

感謝您的反饋, A.

+0

可能你重新回答了答案,上週有數據丟失導致答案沒有被接受?非常感謝! – CharlesB 2010-10-18 12:12:36

回答

3

您可以創建一個post-commit hook,將在最新版本導出庫到Web服務器的目錄:

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

+0

這聽起來非常接近我的設置:我確實將存儲庫和網站託管在同一個服務器帳戶上。大!但哇:「刪除舊網站」部分是強制性的?它是1.5GIGS。我寧願讓它只更新已更改的內容。 – pixeline 2010-10-07 20:01:37

+0

沒有什麼是強制性的,這只是一個你可以適應的例子!你可以做一個臨時工作副本和rync你的網站svn更新到你的.svn排除 – CharlesB 2010-10-07 23:14:00

+0

非常感謝Charles! – pixeline 2010-10-09 08:50:06

2

Basicly你可以用svn repository hooks做到這一點,尤其是post-commit鉤。

+0

來自svn書籍的信息:http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-5-sect-2.1 – 2010-10-07 09:54:31

1
  1. 在版本庫創建/網站的工作副本(本地拷貝)您的網絡服務器通過執行svn 結帳。
  2. 你可以在cron/scheduler中設置一個任務(取決於linux/windows)。該任務可以在您的工作副本中執行一個 svn更新。這可以每隔幾分鐘/小時完成一次,具體取決於提交的頻率。
  3. 指示您的網絡服務器不要顯示.svn目錄。在Apache中的情況下,可以包括以下行到您的httpd.conf(應該在IIS中太,讓我知道,如果你需要這個窗口)
<DirectoryMatch \.svn> 
    Order allow, deny 
    Deny from all 
</DirectoryMatch> 

AliasMatch \.svn /non-existant-page 
+0

有趣的方法,使用cronjob定期同步。謝謝! – pixeline 2010-10-09 08:50:44