【问题标题】:Git: Access Control? How to do in practiceGit:访问控制?实践中怎么做
【发布时间】:2011-12-04 04:11:38
【问题描述】:

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

我的问题:

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

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

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

  4. 以防万一有人也知道这一点:Eclipse 中是否有办法将多个 GIT 存储库中的内容检查到一个项目中,并且(反过来)将一个 Eclipse 项目中的代码提交到多个不同的 GIT 存储库(基于包名称/路径或上下文菜单)?

非常感谢 马库斯!

【问题讨论】:

    标签: eclipse security git version-control


    【解决方案1】:

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

    对于问题 2) 和 3):

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

    在这种情况下,钩子可以检查谁在推送,以及路径或 refspec(分支)与描述策略的一些配置文件。这记录在这里:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:
        1. 如果您想要差异控制,则必须将代码拆分为多个 git 存储库。您无法通过分支或其他方式进行控制。 Git 下载整个 repo。期间。

        2. 您可以查看 git 模块,了解一种机制,以便更轻松地处理由多个 git 存储库构建的事物。

        【讨论】:

        • 这不是完全正确的 - 像 gitolite 这样的东西实际上可以执行 per-ref 权限。但我绝对不会推荐它作为保护机密信息的一种方式——我支持拆分存储库的建议。
        • @Jefromi:是的,但是即使是gitolite也只能在分支/标签/文件/目录级别控制写访问;读取访问始终是每个 repo (sitaramc.github.com/gitolite/index.html#gl_what)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 2018-10-08
        • 1970-01-01
        • 1970-01-01
        • 2016-03-30
        相关资源
        最近更新 更多