Git:访问控制?在实践中怎么做

时间:2011-10-09 23:46:21

标签: eclipse security git version-control

如何保护完整(Java)应用程序的GIT存储库,使开发人员能够访问存储库中的所有源代码。我知道GIT是一个分布式版本控制,开发人员通常会“下载/获取”完整的(!)存储库。

我的问题:

  1. 如何在git中编写“模块/自治部件”?例如,通过API /接口提取模块“支付层”和“数据库层”和“处理层”等等。我是否必须为所有这些模块设置一个单独的git存储库?

  2. 有没有办法在GIT中拥有一个大型存储库,但以某种方式限制路径访问? (客户应该只收回他被授予访问权限的文件)

  3. 有没有办法在GIT中拥有一个大型存储库,但以某种方式限制分支/标签的访问? (客户应该只收回他被授予访问权限的文件)

  4. 以防万一有人也知道这一点:eclipse中是否有办法将多个GIT存储库中的内容转移到一个项目中(另一方面)将一个eclipse项目中的代码提交到多个不同的GIT存储库(基于包名称/路径或在上下文菜单中)?

  5. 非常感谢你 马库斯!

3 个答案:

答案 0 :(得分:4)

  1. 如果需要差异控制,则必须将代码拆分为多个git存储库。你不能通过分支或其他什么来控制。 Git下载整个仓库。周期。

  2. 您可以查看git模块中的机制,以便更轻松地使用由多个git存储库构建的东西。

答案 1 :(得分:2)

1)和4)取决于你的构建环境。在git中,您尝试为每个模块设置单独的存储库,但如果源树的设置变得很痛苦,您可以使用git子模块(尽管人们不喜欢它们)或Android项目使用的repo工具。这允许您拥有一个由更多子项目组成的“伞形”项目。不确定是否值得为几个组件。只有一个git repo可能仍然更有意义。

问题2)和3):

对于访问,我建议每个子团队保留自己的fork(存储库),并且有人会审查他们推送到集成存储库的内容。如果您不喜欢这种方法,可以使用git服务器挂钩来强制编写脚本的策略。

在这种情况下,挂钩可以检查谁正在推送,并且路径或refspec(分支)针对描述策略的某个配置文件。这在此处记录:

https://git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy

答案 2 :(得分:0)

1)。看看Git子模块http://linux.die.net/man/1/git-submodule

2,3)。看看Gitolite https://github.com/sitaramc/gitolite/blob/pu/doc/gitolite.conf.mkd

4)。我认为任何eclipse-git插件都不允许这样做。但是,您可以使用外部/命令行客户端来实现您的目的。