2012-12-05 83 views
1

在舊的工作,我的網站有以下部署流程的工作:使用Subversion版本網站+數據庫

1)檢查出網站的一部分,你想從SVN

2編輯)執行改變

3)檢查與相關消息

4)執行腳本有什麼我承擔更新生產網站的變化是svn export命令

快進到今天。我想對前一個網站做一些非常熟悉的事情,但是增加一個網站將建立在我自己的CMS系統上的轉折點。從本質上講,網站的大多數文本/圖像都可以由管理員用戶編輯(使用我自己設計的管理界面來添加常見問題,修改拼寫錯誤,改變內容)。該網站的當前內容將存儲在MySQL數據庫中。對於每個用戶請求,該內容都是通過PHP MVC框架提取的。我想版本化所有東西,這樣如果管理員用戶真的在編輯過程中搞砸了,我們可以簡單地回滾到更舊的版本。是這樣的可能與svn/mysql/php?

我可以看到如果這些文件是靜態html文件,一切都會很酷,但我有點想念我如何版本數據庫,PHP文件(這在我的結構變化的情況下,實際程序員)一起進入一個有凝聚力的系統。有沒有人有任何建議,文章,建議書籍等可以幫助我設計這個概念

+0

對於那些密切的投票,如果你認爲它是計算器太廣,請至少選它是轉移到程序員.stackexchange。我認爲這涉及到涉及領域特定知識的大範圍領域需要編碼者的意見,但在人們認爲我能得到最佳答案的任何地方,我都願意將自己放在那裏。 – thatidiotguy

回答

2

你只需要設置一個修訂系統作爲你的CMS的一部分。因此,無論何時對一段內容進行編輯而不是直接編輯內容記錄,您都可以使用第二個表來存儲該內容的新版本。然後在任何時候,您都可以訪問您的修訂版本並提取該信息以覆蓋內容中的當前值。如果你需要一個例子,你可能想看看Drupal,他們做得很好。這是一個很簡單的例子:

tbl_article { 
    int id primary key, 
    varchar(100) title, 
    text body 
} 

tbl_article_revision { 
    int id primary key, 
    int article_id, 
    varchar(100) title, 
    text body 
} 

所以,你可以在任何時候創建新的修訂版,然後當你準備好只是爲了讓一個修訂的活,只是在用它覆蓋在tbl_article值。或者你也可以什麼都不存放在tbl_article,只是有這樣一個指針修訂表:

tbl_article { 
    int id primary key, 
    int article_revision_id 
} 

tbl_article_revision { 
    int id primary key, 
    int article_id, 
    varchar(100) title, 
    text body 
} 
+0

啊我明白了。非常酷的想法。也許我可以添加一個TIMESTAMP字段到'tbl_article_revision'來跟蹤它們超出主鍵? – thatidiotguy

+0

是的,正如我所說的,這只是一個非常簡單的例子。 – Pitchinnate

+0

顯然你仍然會使用SVN來存儲你對php代碼所做的修改。 – Pitchinnate