2017-07-20 55 views
0

我已經開始致力於新的大型項目。它包含了很多Web門戶和微服務。大型項目的Git回購

我在想如何構建git回購。 在這一刻我有這樣的:

Main Folder(one repo) 
    Portals(folder) 
      Portal 1(folder) 
      Portal 2(folder) 
    Services(folder) 
      Service 1(folder) 
      Service 2(folder) 

而第二個選項是:

Main Folder(folder) 
    Portals(repo) 
      Portal 1(folder) 
      Portal 2(folder) 
    Services(repo) 
      Service 1(folder) 
      Service 2(folder) 

而最後一個選項我在想:

Main Folder(folder) 
     Portals(folder) 
       Portal 1(repo) 
       Portal 2(repo) 
     Services(folder) 
       Service 1(repo) 
       Service 2(repo) 

你覺得呢?有沒有這樣做的標準?

+2

有沒有這樣的標準。做這些門戶網站是否有相互依賴關係?或者它們是否相互關聯?如果是,那麼將整個應用程序保存在一個存儲庫中是有意義的。 –

回答

1

對於這個特定場景,我會用git submodules

Main Folder(repo) 
    Portals(folder) 
      Portal 1(submodule) 
      Portal 2(submodule) 
    Services(folder) 
      Service 1(submodule) 
      Service 2(submodule) 

這樣你的所有子項目(門戶/服務)都是孤立的,但集中在一個回購單中。您可以輕鬆地刪除子模塊,並繼續使用您的主要repo,而刪除的模塊仍然可以存活並用於其他項目,並且可以稍後添加,如果需要的話。

閱讀git的子模塊這裏:

2

沒有客觀的回答這個問題。您應該考慮,除了SVN和其他早期的版本控制系統之外,Git會努力爭取小型,模塊化和包含的存儲庫。這使分支更容易,這是Git工作流程的一部分。

在考慮,如果一個項目的兩個部分應該是在單獨的存儲庫,問自己以下問題:

  • 可以部分分開使用? (是嗎?那麼你應該使用獨立的存儲庫。)
  • 將更改爲一個部分幾乎總是需要更改其他部分? (否?那麼你很可能應該使用獨立的存儲庫。)
  • 所有部件是否遵循相同的發佈時間表? (否?那麼你應該使用單獨的存儲庫。)

請注意,實踐中的最後一個問題是一個重要的問題。即使是一部分依賴於其他部分,但發佈並未集成,您應該/可以將這些部分拆分到不同的存儲庫中。爲了解決依賴關係,您將使用Git submodules;這允許你在特定版本上鎖定你的依賴庫。