2011-06-16 10 views
20

我有一個基本但常見的WordPress工作流問題。使用WordPress的Git工作流程 - 本地生活

當前的工作流程

  1. 我制定的一切本地
  2. FTP文件(和數據庫轉儲)到服務器,以顯示客戶端
  3. 製作要求的局部改變
  4. FTP文件(和數據庫轉儲)服務器再次
  5. 更多本地編輯
  6. FTP(an d數據庫轉儲)再次
  7. 沖洗和重複

這已成爲一個怪物痛苦。必須有一個更好的辦法

懷疑Git的工作流程

  1. 本地副本將是我的「主人」
  2. 「推」從這個地方文件備份到某處
  3. 「拉」的文件在我的現場/測試服務器的中間

我想我有一個想法應該如何在概念上完成,但我不知道它應該如何公關實際上完成了。我應該在中間使用Github私人回購?有沒有一種方法讓我的Live站點直接從本地主機回購「拉」?

道歉,如果這似乎是基本的或毆打致死,但我已經搜索,並沒有找到一個基本的「這是你的工作流程應該如何看」指南。

謝謝!

Terry

+0

+1問題=我做同樣的事情,這是一個主要的痛苦。 Git工作流似乎是一個很好的解決方 – Bosworth99 2011-06-16 14:51:16

回答

8

看起來你根本沒有使用版本控制。你要開始是個好主意。我只是從SVN轉換到Git,我有點做你在做什麼在更宏大的水平。讓我們先從你的目標:

  1. 獲取版本控制
  2. 通過GIT中建立某種網絡部署的
  3. 主機版本控制遠程

的人會告訴你,Git是不是一個網絡部署工具 - 他們可能是對的,但到目前爲止,它對我來說工作正常,而且我做了類似的事情。幸運的是,我在Wordpress安裝練習 - 這是我採取的步驟。

  1. 通過Git設置獲得了一切,並安裝到客戶端去。
  2. 在vanilla安裝下載了最新版本的WordPress。
  3. git init底座安裝不做任何修改
  4. 支主機進入「開發」和「活」
  5. 本地工作,犯「開發」,那麼一旦更改完成,合併後的生活。現在

,我結束了回去,做了創建gitolite服務器虛擬機,並將它作爲我的主人 - 這有效地代替github上在你的榜樣。我想你知道一個遠程倉庫的價值 - 我肯定會追求這條路線。

我將在我的建議的第2步中回溯一秒。你應該保留主版本的WordPress版本,這樣你就可以升級核心,看看它如何與你的自定義代碼一起玩,而不是像你的某個分支之類的東西升級核心,一切都打破。這對我來說非常方便,而且我肯定會使用像Magento這樣的大型項目。

好的,回到部署。你可以在你的網絡服務器上放一個git客戶端,並在工作流中將它分支到pull--但你必須考慮一些特殊的計劃。你的prod文件很可能與你在某些地方的開發文件不同,特別是配置(數據庫等) - 你要確保這些文件在.gitignore之內,所以你不會把dev配置成你的prod環境。

我主要總結了人們在開始工作時告訴我的,所以我希望它有幫助。再次,我略微超過了你的位置,所以如果有人有任何更正/優化,請隨時發表評論。

+0

謝謝@melee的詳細解答!所以,你建議我有3個本地回購站(master,dev,live),一個Github(dev)回購站和一個主服務器回購站(live repo)。所以,我所有的本地合併和分支,然後把主人推到Github,然後把主人拉到現場服務器? 那基本/最簡單的想法?強調*簡單*。 – saltcod 2011-06-16 14:27:52

+0

回覆:你的第二句話 - 沒有 - 一個回報3個分支遠程。但除此之外,這是正確的。你正在解決一個回購協議,這是最好的部分! :) – Nic 2011-06-16 14:29:24

+0

對不起!還有一次:那麼,我有3個本地回購站,只有Github上的LIVE分支和主服務器? IE:做我所有的改變,然後將LIVE分支推送到其他地方? – saltcod 2011-06-16 14:34:46

0

我開始爲Wordpress設置這樣一個工作流程。我已經爲其他幾個Web項目工作。

我在中央位置使用gitolite(https://github.com/sitaramc/gitolite/wiki/)工具來管理裸倉庫(沒有本地簽出的倉庫),然後在gitolite中觸發更新掛鉤當一個分支從開發位置被推動時。

然後這個鉤子使用存儲在部署服務器上的共享私鑰ssh到活動服務器(或客戶端帳戶或其他任何),並從public_html或任何您爲WordPress安裝提供服務的位置執行git pull。

這是通過gitolite配置文件中的只讀條目完成的,gitolite配置文件是本地配置庫中的conf/gitolite.conf。 (Gitolite使用一個Git倉庫來管理它的配置文件)

repo wp-versions 
    RW+ = tmzt 
    R = server1 
    R = server2 

首先是我的主公開密鑰,存儲keydir/tmzt.pub在同一個存儲庫(格式相同的.ssh/authorized_keys中)。另外兩個是活動的Web服務器,它將對該存儲庫具有隻讀訪問權限。將三個鍵添加到keydir,並確保提交和推送。這些更改將自動在gitolite安裝中進行。 (服務器密鑰由多個用戶共享並複製到每個用戶的.ssh/id_rsa文件中,但如果您願意,這可能是www-data)。

RW +表示我的主用戶讀取,寫入並可以更新非快進分支(用於恢復服務器上的提交)。