我知道我可以將我的所有項目文件保存到存儲庫中,因此部署新版本的軟件只會將svn導出到正確的目錄中。 但我有一種感覺,這是不正確的方式和媒體文件,我應該使用一些其他實用程序進行部署,如rsync。但這也是雙面同步的問題=我喜歡將完整項目備份到一些安全空間(不僅僅是活動服務器)。 所以主要問題是什麼是在PHP中的Web應用程序的正確方式和項目的目錄結構?將項目的媒體文件保存到svn倉庫是否正確?
回答
呃,一個複雜的。首先,如果你有這樣的可能性,把'code'和'web'部分分開是很好的做法。類似的東西。
web/
web/css/
web/upload
code/
code/lib/
code/actions
這將PHP從Web根中解脫出來。更安全(攻擊者無法通過在瀏覽器中輸入URL來訪問您的文件)。但是 - 這需要適當的應用程序設計(例如Symfony框架給你類似的佈局)。
第二件事 - 沒有任何錯誤(在我看來)與SVN回購內的二進制文件。不過,這一切都取決於我們正在談論的文件。如果沒有用戶上傳的內容 - 繼續。部署越簡單,發生錯誤的可能性就越小。
順便說一句:你總是可以選擇退出一些文件夾內容從SVN所以用戶文件不會搞亂你的文件。
因此,有一件事你必須保持在你的設計是分離用戶輸入的內容的內容(最好是爲用戶創建特殊文件夾,並選擇退出SVN)。
將媒體文件放入源代碼控制(svn或其他)是絕對正確的。儘管將媒體文件放在與.php文件分開的地方可能是一個好主意。
爲什麼要一步完成兩步驟部署(svn up然後rsync或類似)?
將您的媒體文件放入您的SVN存儲庫是沒有問題的,因爲您的媒體版本與其他軟件相關聯。
此外,如果你想備份你的svn倉庫,你可以使用svnsync
命令讓其他一些鏡像鏡像你的「主」subversion版本庫。
關於結構,最佳實踐主要取決於您所面對的用例。你很可能想要通過模塊和內容類型來組織你的文件(所以介質與代碼分離,...)。
將媒體文件放入svn也可以。 您可以使用外部svn鏈接將媒體文件混合到您的樹中,因此您只有一個簽出操作,並且您有完整的Subversion支持,並且不會混亂您的源代碼存儲庫。
在我看來,這取決於你在談論什麼類型的媒體。如果這是靜態的,比如圖像,javascript,css等等 - 不是暫時的,那麼把它放在顛覆中。但是,如果它會改變,比如廣告,我認爲沒有太多理由來顛覆它。只需將目錄propset設置爲忽略並使用rsync,scp或ftp手動上載文件即可。
- 1. SVN倉庫是否應該包含IDE項目文件?
- 2. SVN倉庫項目位置
- 3. 將視頻文件從獨立存儲保存到媒體庫
- 4. 如何將svn項目導出到另一個svn倉庫?
- 5. 使用Sitecore項目Web API將Json文件項目上載到sitecore媒體庫
- 6. 媒體元素JS - 檢查媒體文件是否存在
- 7. 將文件保存到項目文件夾並保存路徑
- 8. 將項目保存到XML文件
- 9. 我可以從克隆SVN倉庫我的項目源到Git倉庫
- 10. 如何導入我的本地svn項目到新建的svn倉庫並保存歷史信息
- 11. 將文本文件保存在iPhone的媒體文件夾中
- 12. 將mercurial倉庫轉換成svn倉庫
- 13. 將XML文件保存到正在運行的Android項目
- 14. 防止從是否有SVN倉庫
- 15. 是否可以從svn倉庫中清除文件?
- 16. 「保存媒體附件時出錯。」在媒體庫
- 17. 將文件添加到特定的svn倉庫
- 18. 如何將git倉庫複製到新的svn倉庫?
- 19. 將文件添加到Xcode項目(SVN)
- 20. 下面的代碼是否正確將字節保存到文件
- 21. 檢查SVN倉庫存在
- 22. AS3將媒體文件保存到服務器
- 23. SVN倉庫子文件夾從不同的倉庫檢出
- 24. 將SVN倉庫轉換爲Git,維護SVN倉庫
- 25. 媒體文件沒有正確返回
- 26. 用git在本地保存代碼到多個SVN倉庫
- 27. tortoise SVN - 從SVN倉庫獲取項目並從本地簽入
- 28. 將git倉庫導出到svn
- 29. Git倉庫的正確密碼存儲
- 30. git-svn多個git倉庫到同一個svn倉庫
我認爲你是對的。 我曾經做rsync沒有排除.svn direcotries,所以我不得不做svn導出到rsync之前的本地文件夾(用於獲取乾淨的代碼在主機 - 沒有.svn文件夾) 現在我寫了適當的排除rsync的模板,所以沒有人.svn文件不同步。 謝謝。 – mihan007 2009-12-10 11:04:08