2016-12-29 132 views
0

我不確定描述此問題的最佳方式 - 我已經完成了一些Google搜索,但可用。Github解決方案文件的依賴關係

我現在有具有以下解決方案:

Repository 1 ProductProject1 ProductProject2 ProductProject3 SharedCodeProject1 SharedCodeProject2

我現在有是,如果任何開發人員都希望在ProductProject1工作,他們必須克隆整個庫這使他們ProductProject1的問題, 2和3.

這一直很好,直到最近,現在我正在招聘更多的開發人員,我真的希望他們只專注於3個產品項目之一,並專注於此。

我很好奇別人怎麼處理這種情況?只需讓開發人員像我一樣克隆整個存儲庫?

我提出的解決辦法是......

可能的解決方案1 ​​

設置獨立的知識庫像這樣:

Repository1 ProductProject1 SharedCodeProject1 SharedCodeProject2

Repository2 ProductProject2 SharedCodeProject1 SharedCodeProject2

Repository3 ProductProject3 SharedCodeProject1 SharedCodeProject2

臨:的代碼精簡,只公開了開發的ProductProject他們負責

缺點:經過思考之後,我意識到,SharedCodeProject1SharedCodeProject2將基本上都混合在每個存儲庫版本,實際上他們應該也可以保持一致。

可能的解決方案2

設置個別儲存庫爲這樣:

Repository1 ProductProject1

Repository2 ProductProject2

Repository3 ProductProject3

Repository4 SharedCodeProject1 SharedCodeProject2

優點:老實說,我甚至不確定這個結構是否可能,因爲在存儲庫1 - 3中會有大量的破壞引用(除非有一些我不知道的魔法設置) - 然而,理論上來說,SharedCodeProject1和2是集中式的,所以任何更新所有開發者的開發者都會收到並且可以重用這些更新(具體到數據庫層,這是共享代碼項目和其他共享代碼項目中的業務邏輯之一)

缺點:(這是否有道理)

實施不會真正實現跨越所有存儲庫,直到同步重大更改

我正在努力弄清楚完成這項工作的最佳方法。我希望這是有道理的,請讓我知道,如果我能澄清。

我只是好奇其他公司如何在github上構建這樣的大型解決方案,同時試圖限制只能訪問開發者到特定項目。

非常感謝!

回答

-1

那麼這裏是我的想法做它在不同的回購協議,但可以用於測試兼容性只是git克隆它們,然後你可以測試兼容性的主系統。 Hech只需編寫一個.sh文件即可在您想測試時克隆它們。

0

您應該將所有產品移至不同的存儲庫以及您的通用代碼。通用代碼應該在它自己的repo中,從中複製並創建一個Nuget包。

然後,您可以將Nuget包添加到Nuget存儲庫(可以是網絡共享,但內置到TFS和VSTS中),您可以將其添加爲您的產品的參考。

當您更改共享代碼時,您將創建一個測試版本並部署到您的軟件包管理解決方案。當您的開發人員打開他們的項目時,系統會提示他們更新到最新的軟件包版本。這樣,如果你有一個版本,並且需要發佈一個依賴關係v1.2的產品1,以儘可能降低風險,即使該共享組件的新版本v2.0已經出貨。

您可以控制所有回購的權限,但應該嘗試遵循內部開放源代碼策略,其中每個人都可以看到所有代碼,並向所有者/保管人提交他們需要的更改/修復程序的請求。

+0

我唯一擔心的問題是共享代碼幾乎每天都會被上述項目修改。似乎要分開管理整個流程會非常麻煩。 – 99823

+0

這聽起來像是你需要掌握的東西。你有一個被認爲是反模式的緊密耦合問題。你應該促進鬆耦合... –

+0

我不知道該怎麼做......我們有一個針對我們數據庫的項目和一個針對我們服務的項目,這兩個項目在我們的產品中重複使用。對於從事產品工作的人來說,爲服務項目添加該產品的服務功能非常普遍。通常還有其他的事情嗎?我認爲這將被認爲是最佳做法。 – 99823

1

這一直很好,但直到最近我現在僱用更多的開發人員,我真的希望他們只專注於3個產品項目之一,並專注於此。

我想你應該認真考慮,削減你的資料庫中多個存儲庫之前...

你就不能使用多個SLN文件,並把一些信任你developpers做正確的事?

有一個動作,建議只使用一個存儲庫,並有好的東西採取它... 谷歌(Facebook和谷歌正在使用它)上的'monorepo'參見 其中一個鏈接: http://danluu.com/monorepo/

另一種方式的確是創建多個存儲庫並創建nuget包來管理依賴關係。

+0

經過許多資源,我開始意識到,具有多個解決方案文件的單個存儲庫設置是一種方式。 – 99823

相關問題