2

以下是我的要求:

  • 我有三个 TFS 组:Company1、Team1 和 Admins。管理员是 Team1 的子集。Team1 是 Company1 的子集。
  • 我的 Git 存储库包含一个主分支和 0 个或多个附加分支。
  • 管理员可以做任何事情。Team1 可以拉取和推送代码到所有分支;但是他们无法推动掌握。Company1 可以从所有分支中提取代码,但它们根本无法推送。

这是我尝试过的。

方法 1

  • 在回购级别:
    • Company1 拥有所有未设置的权限,但读取除外,即允许。
    • Team1 拥有未设置的所有权限,“分支创建”和“读取”除外。
    • 管理员拥有所有权限 ALLOW。
  • 在分支级别,对于 master:
    • Team1 拥有未设置的所有权限
    • Admins 拥有继承 ALLOW 的所有权限
  • 在分支级别,对于非主分支:
    • Team1 拥有所有权限 ALLOW
    • Admins 拥有继承 ALLOW 的所有权限

问题:虽然这对存在的分支非常有效,但如果 Team1 的成员创建了一个允许他们这样做的新分支,则他们无法将代码推送到该分支。我必须手动将 Team1 权限设置为允许分支,然后他们才能使用它。

方法 2

注意:Admins 和 Company1 权限与之前的方法相比没有变化。

  • 在回购级别:
    • Team1 已为所有内容设置了 ALLOW
  • 在分支级别,对于 master:
    • Team1 为所有内容设置了 DENY
  • 在分支级别,对于非主分支:
    • Team1 继承了所有内容的 ALLOW 集

问题:这种方法解决了上述问题,但是因为管理员是 Team1 的子集,管理员也被拒绝访问主服务器(拒绝胜过允许)。因此,每次我需要将代码推送到 master 时,我都必须暂时更改权限以允许自己这样做,然后在完成后将其更改回来。

问题:有没有办法配置权限来解决这两个问题,即我不需要手动干预?

我知道一种解决方案:创建两个新组,我们称它们为 Regular 和 Master。这些组包含 Team1 的单独成员(没有任何团队成员在两者中)。这解决了与方法 2 相关的问题,其中管理员也存在于 Team1 组中。这里的问题是我有 2 个组要管理,而不是由 IT 为我管理的 1 个组。所以还是有一些偶尔的手工工作。

这是最好的解决方案吗?

注意:我对所有这一切都是新手,这个任务落在了我的腿上,所以请原谅任何术语错误。

4

0 回答 0