在使用源代码管理时,我如何才能对源代码的不同部分的用户组具有不同的权限?
While using source control, how can I have different permissions for groups of users for different parts of the source code?
我对应用源代码管理有疑问。我尝试了很多东西,但我无法弄清楚。在使用源代码管理时,我希望能够对源代码的不同部分的用户组具有不同的权限。
我们曾经有一个包含整个 (Visual Studio) 解决方案和所有项目的大型存储库。但是这次我们需要能够管理源代码不同部分的权限(每个项目)。这对于保护知识分子的某些部分很重要 属性.
提供一点上下文说明:
- 我们在 Visual Studio (VS) 中开发代码(主要是 C# 和 C++)。我们将
Azure-DevOps
与 git
个存储库结合使用。
- 我有一个 (VS) 解决方案,其中包含许多 (20+) 个项目(project1、project2、...)。
- 这些项目中的大多数并不真正 运行 自己(或者这样做没有意义)。
- 您可以考虑这些项目,例如库,(可选)modules/plugins.
- 每个项目都需要不同的特定领域知识来开发。
- 对于某些测试,我们需要在一个大的解决方案中提供所有代码,以便我们可以调试和设置断点,例如
我尝试了什么:
很多事情,但最接近可行的解决方案是:
- 我为每个项目创建了一个单独的存储库。那么我确实可以很好地管理每个用户的权限。
- 我为解决方案创建了一个存储库,我们将此存储库称为
CombinedRepo
。
- 将项目添加为
git-submodules
到 CombinedRepo
。
此设置在拉动 CombinedRepo
时有效。使用 VS 的子模块。我可以测试、调试和更改等等
但是,此设置存在以下问题:
- 当我们在
CombinedRepo
中工作并更改了其中一个子模块的代码,并且想要提交这些更改时,我们收到此错误:fatal: unexpected sequence in commit output.
(这是在使用 VS 提交时)。
- 反过来也行不通:如果在子模块自己的仓库中进行了更改,我无法将这些更改拉到我们的
CombinedRepo
(使用 VS 时)。
在子模块中进行更改后,必须切换到该子模块才能成功提交更改。
Visual Studio 看到在子模块文件夹中所做的更改,但未能提交它们。
要解决此问题,请转至团队资源管理器 - 管理连接 - 本地 Git 存储库 - 添加,浏览至子模块文件夹并使用添加进行确认。双击创建的本地存储库将其打开。
现在您可以提交更改并将它们推送到远程源,就像您在原始子模块存储库中所做的那样。
然后再次打开包含子模块文件夹的本地存储库,转到更改并提交它们以在主模块中包含更改的子模块状态。
这里有一些功能请求链接,您可以关注它们以获取最新消息。
此外,如果您只想限制用户或团队成员提交代码,我们可以设置branch policy and disable the branch permission Bypass policies when pushing。然后所有用户都需要创建拉取请求来推送提交,您可以检查提交并批准拉取请求。
更新
I want to be able to have different permissions for groups of users for different parts of the source code.
感谢 Stefan 的分享。
如果我们使用 TFVC 存储库,我们可以为用户组配置 folder/file 权限。查看下图。
我对应用源代码管理有疑问。我尝试了很多东西,但我无法弄清楚。在使用源代码管理时,我希望能够对源代码的不同部分的用户组具有不同的权限。
我们曾经有一个包含整个 (Visual Studio) 解决方案和所有项目的大型存储库。但是这次我们需要能够管理源代码不同部分的权限(每个项目)。这对于保护知识分子的某些部分很重要 属性.
提供一点上下文说明:
- 我们在 Visual Studio (VS) 中开发代码(主要是 C# 和 C++)。我们将
Azure-DevOps
与git
个存储库结合使用。 - 我有一个 (VS) 解决方案,其中包含许多 (20+) 个项目(project1、project2、...)。
- 这些项目中的大多数并不真正 运行 自己(或者这样做没有意义)。
- 您可以考虑这些项目,例如库,(可选)modules/plugins.
- 每个项目都需要不同的特定领域知识来开发。
- 对于某些测试,我们需要在一个大的解决方案中提供所有代码,以便我们可以调试和设置断点,例如
我尝试了什么:
很多事情,但最接近可行的解决方案是:
- 我为每个项目创建了一个单独的存储库。那么我确实可以很好地管理每个用户的权限。
- 我为解决方案创建了一个存储库,我们将此存储库称为
CombinedRepo
。 - 将项目添加为
git-submodules
到CombinedRepo
。
此设置在拉动 CombinedRepo
时有效。使用 VS 的子模块。我可以测试、调试和更改等等
但是,此设置存在以下问题:
- 当我们在
CombinedRepo
中工作并更改了其中一个子模块的代码,并且想要提交这些更改时,我们收到此错误:fatal: unexpected sequence in commit output.
(这是在使用 VS 提交时)。 - 反过来也行不通:如果在子模块自己的仓库中进行了更改,我无法将这些更改拉到我们的
CombinedRepo
(使用 VS 时)。
在子模块中进行更改后,必须切换到该子模块才能成功提交更改。
Visual Studio 看到在子模块文件夹中所做的更改,但未能提交它们。
要解决此问题,请转至团队资源管理器 - 管理连接 - 本地 Git 存储库 - 添加,浏览至子模块文件夹并使用添加进行确认。双击创建的本地存储库将其打开。
现在您可以提交更改并将它们推送到远程源,就像您在原始子模块存储库中所做的那样。
然后再次打开包含子模块文件夹的本地存储库,转到更改并提交它们以在主模块中包含更改的子模块状态。
这里有一些功能请求链接,您可以关注它们以获取最新消息。
此外,如果您只想限制用户或团队成员提交代码,我们可以设置branch policy and disable the branch permission Bypass policies when pushing。然后所有用户都需要创建拉取请求来推送提交,您可以检查提交并批准拉取请求。
更新
I want to be able to have different permissions for groups of users for different parts of the source code.
感谢 Stefan 的分享。
如果我们使用 TFVC 存储库,我们可以为用户组配置 folder/file 权限。查看下图。