如何设置git分支的读取权限

如何设置git分支的读取权限,git,version-control,Git,Version Control,这是我在采访一家初创公司时被问到的一个问题 “在这种情况下,您将如何保护您的核心源代码? 您希望将程序的某些功能外包。您还希望将该开发人员添加到VCS存储库中,但您不希望此人能够阅读您最重要的代码。” 当我听到这个,我想,“什么?”显然,我完全不及格。再说一次,有很多自由职业者。这类东西必须有安全措施。但说真的,你是怎么做到的 如何邀请某人访问您的存储库并阻止他们阅读某些部分或- 在不共享源代码的情况下,如何要求他人构建程序的一部分 您可以阻止用户推送到分支(请参见:),但如果您授予用户访问存储

这是我在采访一家初创公司时被问到的一个问题

“在这种情况下,您将如何保护您的核心源代码?
您希望将程序的某些功能外包。您还希望将该开发人员添加到VCS存储库中,但您不希望此人能够阅读您最重要的代码。”

当我听到这个,我想,“什么?”显然,我完全不及格。再说一次,有很多自由职业者。这类东西必须有安全措施。但说真的,你是怎么做到的

  • 如何邀请某人访问您的存储库并阻止他们阅读某些部分或-
  • 在不共享源代码的情况下,如何要求他人构建程序的一部分

  • 您可以阻止用户推送到分支(请参见:),但如果您授予用户访问存储库的权限,则无法真正阻止用户签出某些分支
    git
    没有这种粒度。即使它有,我也很难看到它是如何工作的。如果一个分支是另一个分支的后代呢


    如果你有这样的政策,你怎么能指望人们有效地合作呢?

    Git本身缺乏访问控制。但像Gitlab或Gerrit这样的托管服务则不然。以Gerrit为例,您可以让用户访问特定分支、只读或读写、直接推送或强制审阅


    如果您的项目只是一个回购协议,并且您希望将其中的一部分共享给用户,那么您可以将回购协议分为两部分,一部分是私有的,另一部分是公共的。至于构建,您可以设置一个构建环境,在该环境中,用户无法访问,而用户的代码可以提取和集成,用户可以接收构建结果。

    他们是专门谈论Git还是一般的版本控制系统?@torek。所以我猜它们包括CVS、Mercurial等。所以Git和Mercurial作为分布式VCSE,使得实现这一点很困难(不一定是不可能的,但肯定更难)。集中式VCSE有一个特定的位置,可以在该位置设置特定的访问控制。你也可以看看我的草稿里有什么;我在第一章“Gerrit”中很轻松地谈到了这一点。谢谢,我来看看!谢谢你的回答。事实上,我很惊讶他们会这么努力地伪装。但话说回来,这可能只是一个问题。(没有看到它的目的)对于协作部分,我的最佳猜测是遵循模块化设计,让其他人制作程序的子部分,即模块,然后将它们组合起来。