我開始通過GIT中部署了幾個網站的插件。爲什麼使用git裸存儲庫進行網站部署?
我已經通過了一些在網絡上的教程和他們都建議創建一個post-update掛鉤的Web服務器上裸露的遠程存儲庫簽入的DocumentRoot目錄。我已經完成了所有工作,沒有太多問題。
爲什麼我們分開工作目錄中的程序存儲庫?將DocumentRoot目錄用作存儲庫,然後使用htaccess來防止公共訪問任何.git內容有什麼問題?
我開始通過GIT中部署了幾個網站的插件。爲什麼使用git裸存儲庫進行網站部署?
我已經通過了一些在網絡上的教程和他們都建議創建一個post-update掛鉤的Web服務器上裸露的遠程存儲庫簽入的DocumentRoot目錄。我已經完成了所有工作,沒有太多問題。
爲什麼我們分開工作目錄中的程序存儲庫?將DocumentRoot目錄用作存儲庫,然後使用htaccess來防止公共訪問任何.git內容有什麼問題?
實際上,配置不當的htaccess固有的安全風險本身就是一個很好的理由,但主要原因是,默認情況下,您無法推送到非裸回購的檢出分支。 (它可以啓用,但隨後需要git reset --hard
更新工作樹,並沒有什麼比擁有一個單獨的部署目錄簡單)
這裏有幾個問題,雖然相關的實際上是分開的:
1 - 爲什麼我們分開工作目錄中的程序存儲庫?
因爲git阻止您默認推送到檢出分支。因此,您可以永遠不要推到工作目錄,因爲根據定義,如果它在磁盤上,它將被檢出。
2 - 所有這些建議的Web服務器
隱含的問題是創建一個光禿禿的遠程倉庫:why a bare repo?
好吧,裸回購簡直什麼也沒有一個git回購簽出。因此,您可以推送到裸倉庫的任何分支。有些人認爲這種維護更簡單。
二隱含問題:is there an alternative to bare repos?
是的,正如提到的限制是只能在簽出的分支。所以,你可以自由地仍然推到非簽出分支 - 也許「部署」,然後有一個鉤來合併未簽出分支到你的工作目錄。
使用的DocumentRoot爲git的工作目錄:
使用單獨的裸git的repostory
所以,似乎獨立的裸git倉庫是更清潔,易於使用,除了需要安裝一個post-update掛鉤。
計劃1也可以使用,在小型項目中使用它或開發機器是好的,但要小心訪問.git目錄的權限,特別是在更改Web服務器時。例如:nginx不支持.htaccess,它通常與其他項目文件一起存儲在git中。
請注意,裸回購計劃仍允許您在documentRoot中進行即時破解 - 只有您無法將其提交以備將來使用,因爲更新後的掛鉤很可能會將其清除。 – slebetman
是的,做即時攻擊有點不同,我會更新答案。 – Fwolf