2017-02-26 114 views
2

我們最近決定從TFVC轉移到Git,我試圖找到設計我們新的Git體系結構的最佳方式。Git子樹與Monorepo

我們的代碼是由獨立的,但是緊密耦合模塊,讓我們來看看以下項目:

  • CommonLib1

  • CommonLib2

  • ApplicationA(使用CommonLib1

  • ApplicationB(使用CommonLib1 & CommonLib2

雖然CommonLib1/CommonLib2是完全獨立的,幾乎是ApplicationA/ApplicationB每一個新的功能將需要修改CommonLib1/CommonLib2

此外,添加新功能時,我們希望創建一個跨越所有項目的單個分支。

據我瞭解,我留下了2個主要選項:

  1. 爲每個項目創建一個回購協議,並在ApplicationA/ApplicationB添加CommonLib1/CommonLib2爲子樹。

  2. 爲所有項目創建一個Monorepo。

對於我的情況,最好的Git練習是什麼?

+0

谷歌已經與巨人monorepo成功。我會建議從那裏開始嘗試打破緊密結合的項目。 – jready

+0

我確定它會工作,但我正在尋找最佳實踐..我更願意以正確的方式從頭開始 – Michael

+0

現在「monorepo」是真實的東西嗎?我在Google上看到了很多點擊(https://www.google.com/#q=monorepo),但他們都只是在談論「將一堆垃圾轉儲到一個大型倉庫中」,這不是一個真正的*事情*。該標籤現在存在於StackOverflow中,但對於其特定於標籤的信息幾乎沒有任何意義:http://stackoverflow.com/tags/monorepo/info – torek

回答

1

由於CommonLib1/CommonLib2ApplicationA/ApplicationB是密切相關的,所以你最好使用選項2創建一個單一Monorepo所有項目)。分支結構可以如下:

  • Lib1分支:管理/在這個分支發展/更新CommonLib1。更新後,您可以將其合併到appAappB分支中。

  • Lib2分支:管理/開發/更新CommonLib2在這個分支。更新後,您可以將其合併到appB分支中。

  • appA分支:管理/開發ApplicationA項目。

  • appB分支:管理/開發ApplicationB項目。