2010-04-13 114 views
3

我在CMS應用下面的目錄結構,我們已經寫:版本控制內容管理系統?

/application 
/modules 
    /cms 
     /filemanager 
     /block 
     /pages 
     /sitemap 
    /youtube 
    /rss 
/skin 
    /backend 
     /default 
     /css 
     /js 
     /images 
    /frontend 
    /default 
     /css 
     /js 
     /images 

應用程序包含特定於當前CMS實現代碼,即代碼爲這個特定釐米。 模塊包含我們在各個項目之間共享的代碼的可重複使用部分,例如與YouTube或rss提要一起使用的庫。我們將它們包含爲git子模塊,以便我們可以更新任何網站中的模塊,並將更改推回到所有其他項目中。它使得對代碼進行更改並分發它變得非常簡單。我們希望將CMS變成一個模塊,以便獲得同樣的好處 - 我們可以在源代碼控制下運行整個項目,然後根據需要通過git子模塊更新cms。但是,我們遇到了一個問題: cms需要javascript/images/css才能正常工作。

事情,我們曾經想過:

  • 我們可以創建2個子模塊,一個CMS的皮膚,一個用於CMS,但這意味着你不能「混帳拉」一個版本,而不必的一些想法哪些版本的皮膚與哪些版本的cms一起工作。即1.2.2版CMS可能與1.0.3 CMS-皮膚問題

  • 我們可以在皮膚添加到CMS模塊,但這有以下問題:

    1. 皮膚應該可以對文件根本,模塊代碼不應該,如果它應該可以通過.htaccess
    2. 保護它似乎沒有任何意義與php代碼捆綁資產
    3. 我們可以創建一個/皮膚/後端/去/模塊/ cms /皮膚,但這會導致任何安全問題,我們是否需要像一個符號鏈接該應用程序工作?
    4. 我們可以創建一個git鉤子或一個shell腳本,用於在發生更新時將文件從modules/cms/skin複製到皮膚/後端,但這意味着我們將無法在項目中編輯CMS核心文件,然後將它們推送回到

這是怎麼一般在大型CMS的呢?如何在版本控制下獲取cms的源代碼,爲客戶端應用程序,然後將源代碼更新爲供應商提供的版本?像Magento或Drupal這樣的應用程序如何做到這一點?

回答

2

我不熟悉的CMS項目,但你能:

  • 創建2個子模塊,一個CMS的皮膚,一個用於CMS
  • 使用CMS-皮膚CMS
  • 內嵌套子模塊

cms將是cms-skin的「主要項目」,這意味着每次提交cms時,您都會首先提交cms-skin,而「cms commit」會啓動cms-skin的確切SHA1引用,在提交時使用的皮膚。

這樣你就可以只拉cms,並且它將會得到你需要的cms-skin的確切版本。

欲瞭解更多信息,請參閱此SO answer關於子模塊的真實性質。

+0

當然 - 我知道git repos通過他們的sha-hash跟蹤子模塊的當前狀態,問題是雖然把cms-skin放在cms裏會導致很多其他問題,我在上面解釋過 – Mike 2010-04-13 10:50:48

+0

@Mike:是的,但我沒有得到確切的限制。這個想法是在cms中的適當位置插入/插入皮膚,b /插入皮膚版本(即特殊分支),並重新組織內容以符合其新位置(即在cms內) – VonC 2010-04-13 11:00:47

+0

「皮膚應該是可以在文檔根目錄下找到,模塊代碼不應該,如果是的話,它應該可以通過.htaccess進行保護「 – Mike 2010-04-15 10:16:24