2010-06-01 85 views
6

我是一個Git初學者工作流的問題。我學到了很多命令,並且我知道事情是如何工作的,但我似乎無法弄清楚正確的工作流程。喜歡有一些建議。 [注意,我是唯一的開發工作在我的項目]的Git + Drupal的工作流程

  1. 一個朋友曾經告訴我,這是最好的活的服務器上運行,而該本地主機上,以避免陷入環境中的具體問題。這是真的?

  2. 我使用相同的基本主題爲所有我的Drupal網站。當我在其中一個進行更改時,我目前需要將其複製並粘貼到另外10個地方。有沒有辦法將這個基本主題保存在一個地方,並讓其他網站從中獲取? Github也許?

  3. 如果我想做一個代碼庫和數據庫的'完整'備份 - 唯一的方法是將數據庫導出爲一個sql文件並提交所有內容?

感謝您的幫助!

特里

回答

5
  1. 在一般情況下,你應該運行儘可能靠近生產服務器成爲可能,但不是實際的現場服務器的服務器上的測試,因爲這會在測試過程中折斷線的站點。由於Drupal設計在各種服務器上運行良好,因此使用類似的服務器並不重要。

  2. 你應該使用git拉,而不是複製粘貼。因爲git有一個分散的設計,所以你並不需要像github這樣的中心位置。如果這對您的工作流程有用,請使用它,但如果不是這樣,則可以直接從一臺服務器提取到另一臺服務器。

  3. Drupal並沒有很好的解決方案來在數據庫中存儲這麼多配置信息並保持同步。同步整個數據庫是一種方法。許多模塊也具有可導出的功能,基本上可以將數據庫中的數據保存爲代碼,以便您可以將其與代碼的其餘部分同步。 Features可能是實驗可導出模型的最簡單方法,並且看看它是否適合您。

+0

感謝您的答覆斯科特。 所以基本上,#2(用於多個網站相同的基本主題),我應該: 1.使git倉庫在/主題/基主題某處 2.要讓所有變更/編輯在這裏3. 這個克隆回購在我所有的子域 4. Git拉變化到子域 再次感謝, 特里 – saltcod 2010-06-01 14:30:09

+0

我會改變1. to/sites/all/themes/base-theme,否則是。 (通常最好將自定義內容保留在根主題和模塊目錄之外,這樣可以使用Drupal本身更容易地升級它們。) – 2010-06-03 13:11:24

+0

我同意Scott的所有答案,但會認爲可以將整個網站轉化爲Git(包括數據庫)。如需完整的書面報告,請訪問:http://www.opc.com.au/web-development/drupal-release-management-drush-and-git 披露:我寫了文章。 @markdorison也使用了Strongarm和Context模塊。 – 2011-05-03 02:18:15

2
  1. 我理解你的朋友的觀點,但我與運行(潛在的,呃,可能)破開發代碼在生產服務器上堅決不同意。更好的辦法是,下載VirtualBox並設置一個與你部署的服務器配置相同的虛擬機。使用git爲您部署的每個版本創建「標籤」,以便爲您的網站的「版本」提供有用的參考點。
  2. 看看「git submodules」。你幾乎肯定需要知道這些是什麼,但如果你來自顛覆背景,你可能會發現它們很混亂。子模塊基本上是對其他存儲庫的引用,因此您可以在主項目中的軟鏈接到另一個項目。但是,它們必須自成一體。
  3. 我個人喜歡養schema.sql文件文件在我的倉庫(只是一個空白的模式,在寫SQL),但我不認爲保持你的完整數據庫備份存儲庫中的將是一個明智的做法,即使您可以。保持分開。

如果您對版本控制系統的整體概念還不熟悉,那麼您可能更喜歡使用雙腳。隨着你走,這一切都將開始有意義。當然,就其性質而言,由於您可以來回滾動,因此您不可能造成任何永久性傷害。

一家公司推薦:頻繁地進行提交。每當你做出一個有效的改變時,提交。較小的提交比較容易處理。例如,如果您需要撤銷已損壞的更改,那麼如果您的提交是原子級的,那麼如果不移除同時提交的一堆工作代碼,則更有可能將其撤消。

1

展開反傾銷調查的Drupal分貝regulary我使用

一) 創建一個名爲 「DB」 一空,未連接的分支git的別名 找到http://gist.github.com/360294

B中的別名) 的以下命令,使用偉大的maatkit工具,清空 一些不感興趣的表,並將db轉儲爲單獨的文件, 沒有評論

mk-find DBNAME --tbllike "cache%" --exec "TRUNCATE %D.%N"; 
mk-find DBNAME --tbllike "watchdog" --exec "TRUNCATE %D.%N"; 
git checkout db && \ 
cd /GITROOT/db && rm -rf * && \ 
mk-parallel-dump -d DBNAME -- mysqldump --skip-extended-insert --skip-comments --skip-lock-tables '%D' '%N' \> '%N.sql' 
0
  1. 一般情況下,越接近你的環境是彼此更好。這在嘗試診斷和追蹤問題時變得尤爲重要。這並不是說你的每個環境(dev,qa,prod等)都不可能有不同的設置,但是我肯定會說如果可能的話,最好保持一致。

  2. 爲共享主題設置git存儲庫是一個好主意,通過複製/粘貼更改來移除問題繼承。無論你是在你自己的服務器上建立一個git倉庫,還是使用像github這樣的服務,都是個人喜好的問題。

  3. 是的,爲了在備份中獲得絕對的一切,除了擁有代碼庫之外,還需要執行數據庫的sqldump。話雖如此,請自由使用Features模塊,儘可能多地獲取代碼中的配置。這也有助於在不同環境之間移動,以及能夠跟蹤您的更改的版本以及其他代碼。一些最重要的項目添加到您的功能將內容類型,視圖的權限,變量(通過Strongarm),塊位置(通過Context),菜單等