如何配置git以便仅为具有读访问权限的人签出一些代码?

时间:2014-02-12 21:26:58

标签: git git-submodules

我有一个git存储库,可由两组用户访问:

  • 构建团队(只读访问权限)
  • 开发团队(读/写访问)

开发团队为了调试工作,希望使用一些他们只能彼此共享的代码 - 并且不应该最终由构建团队签出。

构建团队也是如此。

我已经看过使用私有子模块 - 一个私有子模块存储开发人员之间共享的所有代码,另一个私有子模块存储构建团队共享的所有代码(他们只会看到,并具有读/写访问权限)。有没有办法让这个配置工作(子模块配置/依赖关系通常会被提交到git中,我想)?

是否有替代解决方案,这将使git repo按照我们希望的方式工作?

2 个答案:

答案 0 :(得分:1)

如果你想继续这个特定的想法,你可以使用子模块,但反转依赖。也就是说,您将拥有以下存储库:

  • 主要代码库。 Devs读/写。以只读方式构建团队。
  • 开发代码库。 Devs读/写。建立团队无法访问。将主代码库作为子模块。
  • 构建代码库。开发者无法访问。建立团队读/写。将主代码库作为子模块。

缺点是,如果构建团队需要从主代码库中获取新的更改,那么他们就必须在代码库中进行提交以更新子模块。

同样重要的是要注意,dev代码库不能在主代码库中拥有自己的文件自定义。主代码库将是dev代码库中的一个目录,但主代码库将跟踪该目录内的更改,而不是dev代码库。必须在主代码库目录之外跟踪所有dev / build特定的东西。

答案 1 :(得分:1)

您可以考虑使用git名称空间(请参阅gitnamespaces(7))以使两种变体的对象可用/共享。

查看有关工作流程的教程,无论是git教程附带的教程还是Atlassian附带的教程,请查看git book,查看{{3} }}。赶上"权利"工作流程并不简单,git工作非常不同于集中式SCM习惯的工作。特别是,由于存储库相当轻量级,您可以拥有一个官方"一个和一个"发展"版本(并且每个开发人员依次从两者中提取到他们自己的副本),并且有人正在将开发分支整合到正式开发分支中。您甚至可以考虑(半)自动代码审查工具,例如git in the trenches(但请注意,由于多个包装问题,至少Fedora不会发货)。

Google是您的朋友,git非常受欢迎。