2013-08-18 69 views
0

我有一個基礎網站項目,我用它作爲幾個客戶的起點。每個客戶都可以對項目進行特定的更改,這些項目我不想包括在基礎項目中。然而,有時一個特定的客戶功能在基礎項目中包含並推送給所有其他客戶(如錯誤修復)是有意義的。git項目的多個版本

現在我有TFS的項目設置,以便每個客戶是基礎項目的分支。它通過將更改合併到每個分支中來工作,但這是一個非常緩慢的過程。我想切換到git(在github上),所以我可以在本地執行這些操作並減少在這些操作上花費的時間。

閱讀噸的文章後,這是我的結論至今:

  • 的Git分支不會在我的情況很好地工作。我爲每個項目需要不同的文件夾,所以我可以同時運行這些站點。
  • 將子代碼「子模塊化」到每個客戶回購中似乎不是正確的解決方案,因爲基礎不是項目中的子文件夾,而是「項目」。
  • 採櫻桃謬誤的變更要求的基礎遠程添加到客戶項目和看似複雜(我haven't能夠讓它工作至今)

所以據我瞭解,我應該創建每個新客戶的新回購,最初從基地複製代碼,並創建用於在項目間移動更改的補丁(我不關心歷史記錄)。我也許可以採用這種方法,特別是如果我可以創建一個自動化過程的工具。

有人可以告訴我,如果我在正確的軌道上,我應該如何去理想地添加新的網站(記住工作流應該爲幾個開發人員工作)。

在此先感謝

回答

0

我沒有看到任何分支機構不會爲此工作的原因。您應該能夠在基本分支上進行常見提交,併爲每位客戶創建一個分支。每當有基礎分支的更新時,他們將被合併到不同的客戶分支中。就像你現在在做TFS一樣。

如果您打算直接從混合工作樹中提供服務,需要爲每個正在提供服務的站點提供單獨的存儲庫副本,以便您可以在每個站點中檢出不同的分支。但是,您仍然可以將所有分支包含在Github上的單個存儲庫中。

另一種選擇是在Web服務器所處理的區域以外的本地使用單個存儲庫和工作樹,然後使用部署過程將要提供的數據複製到適當的位置。由於Web服務器不會直接查看git工作樹,因此您不一定需要同時檢出多個分支。

+0

你的答案的中間部分看起來很有趣。但是,如果我只有一個存儲庫,那麼所有分支將存在於該存儲庫中,這可能變得很難維護。想象一下,每個客戶都擁有自己的生命週期,具有部署/修補程序/開發分支。我想我真正想做的(概念上)是爲每個客戶分配主要項目,但顯然這是不可能的。 – jbc

+0

嗯,我發現這個解決方法http://bitdrift.com/post/4534738938/fork-your-own-project-on-github分叉你自己的項目。我想我會試試看。我唯一擔心的是,如果我能夠只吸引某些變化,並且能夠將客戶項目的變化推到基地。 – jbc