Git 在使用源代码管理时,如何对源代码不同部分的用户组拥有不同的权限?

Git 在使用源代码管理时,如何对源代码不同部分的用户组拥有不同的权限?,git,visual-studio,azure-devops,git-submodules,Git,Visual Studio,Azure Devops,Git Submodules,我对应用源代码管理有一个问题。我尝试了很多东西,但我想不出来。在使用源代码管理时,我希望能够对源代码的不同部分的用户组拥有不同的权限 我们曾经有一个包含整个(VisualStudio)解决方案和所有项目的大型存储库。但是这次我们需要能够管理源代码不同部分的权限(每个项目)。这对于保护知识产权的某些部分很重要 要提供上下文的一点说明,请执行以下操作: 我们在visualstudio(VS)中开发代码(主要是C#和C++)。我们将azuredevops与git存储库结合使用 我有一个(VS)解决方

我对应用源代码管理有一个问题。我尝试了很多东西,但我想不出来。在使用源代码管理时,我希望能够对源代码的不同部分的用户组拥有不同的权限

我们曾经有一个包含整个(VisualStudio)解决方案和所有项目的大型存储库。但是这次我们需要能够管理源代码不同部分的权限(每个项目)。这对于保护知识产权的某些部分很重要

要提供上下文的一点说明,请执行以下操作:

  • 我们在visualstudio(VS)中开发代码(主要是C#和C++)。我们将
    azuredevops
    git
    存储库结合使用
  • 我有一个(VS)解决方案,由许多(20多个)项目(project1、project2等)组成
  • 这些项目中的大多数并不是真正独立运行的(或者说这样做没有意义)
  • 你可以考虑这些项目,例如库,(可选)模块/插件。
  • 每个项目都需要开发不同的特定领域知识
  • 对于某些测试,我们需要在一个大的解决方案中提供所有的代码,这样我们就可以调试和设置断点
我尝试了什么:

很多事情,但最接近有效解决方案的是:

  • 我为每个项目创建了一个单独的存储库。这样我就可以很好地管理每个用户的权限
  • 我为解决方案创建了一个存储库,我们将此存储库称为
    CombinedReporto
  • 将项目作为
    git子模块添加到
    CombinedRepo
当拉动
CombinedReporto
时,此设置起作用,包括使用VS的子模块。我可以测试、调试和更改等

但是,我对这种设置有以下问题:

  • 当我们在其中一个子模块的
    CombinedReporto
    和已更改的代码中工作,并希望提交这些更改时,会出现以下错误:
    fatal:提交输出中出现意外序列。
    (这是在使用VS提交时)
  • 另一种方法也不起作用:如果子模块自己的回购协议发生了更改,我无法将这些更改拉到我们的
    CombinedReporto
    (使用VS时)

在子模块中进行更改时,必须切换到该子模块才能成功提交更改


(此信息取自)

Visual Studio看到子模块文件夹中所做的更改,但未能提交这些更改

要解决此问题,请转到团队资源管理器-管理连接-本地Git存储库-添加,浏览到子模块文件夹并用添加确认。双击创建的本地存储库以打开它

现在,您可以提交更改并将其推送到远程源,就像您在原始子模块存储库中所做的那样

然后再次打开包含子模块文件夹的本地存储库,转到更改并提交它们,以在主模块中包含已更改的子模块状态

以下是一些功能请求链接,您可以通过它们获取最新消息

此外,如果您只想限制用户或团队成员提交代码,我们可以设置并禁用分支权限。然后,所有用户都需要创建拉请求来推送提交,您可以检查提交并批准拉请求

更新

我希望能够对源代码不同部分的用户组拥有不同的权限

谢谢Stefan的分享

如果我们使用TFVC repo,我们可以为用户组配置文件夹/文件权限。查看下面的图片


谢谢你的回答,是的,我们也发现了这个博客:)。我们有20多个子模块。切换到每个子模块的问题是,提交可能非常耗时。我真的希望有一个更合适的方法来实现我们的目标。对于与大型团队合作的公司来说,这似乎是一个相当标准的问题。嗨,这个问题怎么样?下面的答案解决了你的问题吗?如果没有,你能告诉我关于这个问题的最新信息吗?我有点改变了我的方法:我现在使用TFSC,而不是使用Git,它允许轻松设置文件夹/文件权限。对于其余部分,TFSC似乎满足了所有要求。我们有一个使用TFSC的工作解决方案。然而,我认为你的答案/说明看起来很好,如果它确实有效,那就是有价值的知识。我还没有测试过它,但我可能有一天会测试它。这个答案看起来很好!我没有测试它,因为我现在已经找到了另一个工作解决方案(使用TFSC代替Git)。但是,一旦我测试了这个,如果它确实有效,我会将它标记为已接受的答案。嗨@Stefan,我在答案中分享了你的解决方案,你也可以在这里分享你的答案并将其标记为答案,它可以帮助其他社区成员解决同样的问题,我们可以存档此线程。谢谢祝你今天愉快。:)我本来打算加上它作为答案,但我还没有花时间。我还想测试您的解决方案,并将其标记为已接受的答案,如果这也有效的话。但现在你的答案中有了这两种解决方案。我把它标记为公认的答案,感谢它花时间帮助我(以及将来的其他人)!我想补充一点。从Git迁移到TFSC-repo的一个缺点是,我现在丢失了历史记录(至少,它仍然保留在Git-repo中)。似乎只有在从TFSC迁移到Git时才可能迁移历史,而不是相反。现在存在的将Git迁移到TFSC的选项已经被贬低了,或者只起到了相反的作用。如果有人打算这样做,这是需要考虑的。