2014-02-12 18 views
0

我有一個Git倉庫,這是由兩組用戶的訪問:如何配置git,以便僅對有讀取權限的人簽出一些代碼?

  • 建隊(只讀訪問)
  • 開發團隊(讀/寫訪問)

開發團隊,因爲他們的調試工作,想要使用一些代碼,他們將只與對方共享 - 而且不應該最終被構建團隊檢出。

構建團隊也是如此。

我看過使用私有子模塊 - 一個私人子模塊存儲開發人員之間共享的所有代碼,另一個存儲構建團隊共享的所有代碼(他們只會看到並讀取了所有代碼/寫入權限)。有沒有辦法讓這個配置工作(子模塊配置/依賴關係通常會變成git,我想)?

有沒有其他的解決方案,這將使git repo以我們期望的方式工作?

+1

爲什麼不能構建團隊簽出的代碼?只要他們不能推出什麼問題? – JaredPar

+1

你能否澄清一下這個「他們將只與對方共享的代碼」是什麼?也許有一種你沒有想到的替代解決方案。 – cdhowie

+0

對於開發商來說,這些都是配置設置,各種模塊和包的NuGet的早期版本,以及開發環境特定的構建工具和配置設置。對於構建團隊來說,一些相同的東西(但與生產環境相關),以及自動化測試工具,安全檢查等等。 – blueberryfields

回答

1

如果你想繼續這個特定的想法,你可以使用子模塊,但反轉依賴。也就是說,您將擁有以下儲存庫:

  • 主代碼庫。 Devs讀/寫。建立團隊只讀。
  • 開發代碼庫。 Devs讀/寫。建立團隊無法訪問。將主代碼庫作爲子模塊。
  • 構建代碼庫。 Devs無法訪問。建立團隊讀/寫。將主代碼庫作爲子模塊。

不利的一面是,如果構建團隊需要從主代碼庫中引入新的變更,那麼他們將不得不在代碼庫中提交更新子模塊。

注意到dev代碼庫不能在主代碼庫中擁有自己的文件自定義也很重要。主代碼庫將是開發代碼庫中的一個目錄,但該目錄內的更改將由主代碼庫進行跟蹤,而不是由開發代碼庫進行跟蹤。所有開發/構建特定的東西都必須在主代碼庫目錄之外進行跟蹤。

1

您可能會考慮使用git命名空間(請參閱gitnamespaces(7))以使這兩個變體的對象可用/共享。

查看關於工作流的教程,或者是與git的教程或Atlassian的教程相關的教程,請查看git book,看看git in the trenches。結合「正確的」工作流程並不是微不足道的,git工程非常不同於人們習慣於集中的SCM。特別是,由於存儲庫相當輕量級,因此您可以擁有「官方」版本和「開發」版本(並且每個開發人員都會根據需要將其從兩者都複製到自己的副本中),並且有人正在進行開發分支的集成確定進入官方。你甚至可以考慮(半)自動化的代碼審查工具,如gerrit(但請注意,由於多個包裝問題,至少Fedora並未發貨)。

谷歌是你的朋友,git是非常受歡迎。

相關問題