2015-09-07 101 views
1

我需要的情況下,像這樣的最好的git安裝做法:如何使用git設置測試環境?

enter image description here

我目前工作的一個Laravel項目,現在讓我們把它叫做core的,它有兩種實現方式(稱爲project_1project_2)。這兩種實現共享相同的core。差異是模型,控制器,請求,路線等

首次嘗試

我設置3個文件夾,一個叫core,一個叫project_1,一個叫project_2core只有在兩個項目中共享的通用文件。沒有模型,控制器在core。每次我對核心進行更改時,都可以輕鬆推送到任一項目。然而,問題是,由於core沒有任何模型,控制器...,我不能做任何測試。

第二次嘗試

所以後來,我創建了一個test項目從core,高配車型,從控制器複製project_2。然後在.git/info/exclude,然後git rm --cached file中分別添加這些文件。但問題是,當推或拉,這些文件也刪除project_2 ...

我想達成什麼

我想一個設置,我可以輕鬆地在test扭曲和測試代碼項目,然後只在coreproject_1project_2之間推碼。

+0

我認爲如果1和2從內核中引出新的更改會更有意義。但這是我猜想的首選問題。 –

+0

@TimCastelijns這就是我在第一次嘗試時所做的。問題是我不能做測試。由於它是一個裸機,沒有支持實際項目中的文件。 – bing

回答

0

您需要使用分支機構。

分支包含從存儲庫基本分支中的特定點開始的單獨更改歷史記錄;稱爲主人

檢出分支;會將您的目錄切換爲僅在該分支中被跟蹤的文件。

有許多不同的分支策略,你可以在網上找到。例如,this article by atlassian描述了功能分支工作流程。

在你的情況,你應該嘗試一些簡單:

  1. 創建你的資料庫。
  2. 僅添加那些對所有環境都通用的文件。我認爲這是「核心」;並提交您的更改。
  3. 創建項目1的一個分支,與git checkout -b project_1
  4. 你會從這裏
  5. 工作正常添加核心擁有的所有文件,所有文件創建/添加/編輯將只在PROJECT_1分支跟蹤和不會影響「核心」(或主分支)。

如果你想創建一個測試環境,測試出任何項目1做:

  1. 創建一個名爲test_project_1新的分支,從主分支。
  2. 合併到project_1分支中;與git merge project_1
  3. 做你的測試。
  4. 如果您發現錯誤;切換回project_1; git checkout project_1
  5. 爲該錯誤修復創建一個新分支,例如git checkout -b project_1_bugfix_1
  6. 修正錯誤,一旦完成;您可以檢查它並在測試分支上進行測試(git checkout test_project_1; git merge test_project_1_bugfix_1)。
  7. 確認錯誤已修復後,您應該將更改合併回主分支project_1;與git checkout -b project_1; git merge project_1_bugfix_1
  8. 現在,如果你想,你可以刪除bugfix分支;與git branch -d project_1_bugfix_1

每次切換分支;文件系統將只反映在該分支中被跟蹤的文件(當然,任何未被跟蹤的文件將保持原樣)。


,如果我在test_project_1轉移找到核心的一個錯誤,而?我應該如何修復它 ?我應該在test_project_1分支中修復它嗎?

  1. 切換到核心(您的主分支)。
  2. 創建一個分支來實現bug修復。
  3. 修復此問題。
  4. 測試它(與測試任何其他分支的方式相同)。
  5. 將錯誤修復分支合併回主服務器。
  6. 切換到test_project_1
  7. Rebase from master。
+0

如果我在test_project_1分支中發現核心錯誤,該怎麼辦?我應該如何解決它?我應該在test_project_1分支中修復它嗎?如果是這樣,我該如何將修復合併回核心分支,然後推送到project_2分支?或者我應該回到核心分支並修復它?在那種情況下,我如何在嘗試修復時進行測試? – bing

+0

因此,根據您的建議,在修復了bug_fix_core分支中的某些內容後,我無法立即在該分支中對其進行測試。相反,我必須將該修補程序合併到test_core分支,然後我可以執行一些測試。理想情況下,我寧願修復測試分支中的錯誤,並且如果可能的話,將其合併回bug_fix分支。它會更方便。但是有沒有辦法呢? – bing

+0

通常情況下 - 一旦您在分支中進行修復 - 您首先[a]測試修復本身是否沒有任何錯誤[b]測試修復是否沒有破壞其他任何內容。然後,一旦完成了這一步,您就會考慮修復這個錯誤,您現在可以將修補程序實施到核心中 - 因此,下次有人從核心中分支出去時,他們就會修復這個問題;記住一切都基於核心/主人。 **這些都是我的建議,你可以自由地做到這一點,但你看到最適合你的場景**。 –