【问题标题】:Limit user access to repositories on Assembla or another SVN hosting service限制用户访问 Assembla 或其他 SVN 托管服务上的存储库
【发布时间】:2012-11-13 18:21:50
【问题描述】:

在阅读了一些相当积极的评论后,我一直在研究 Assembla SVN 托管解决方案。但是,我的要求之一是限制用户访问我设置的某些存储库。原因是我们有一个承包商,我想将他们的代码签入特定的汇编存储库,但是我不想授予他们访问我设置的其他代码存储库的权限。

在这方面我能看到的唯一限制是将用户设置为编辑、查看或所有模式,这似乎不太符合我的要求。尝试阅读 Assembla 常见问题解答,但找不到任何相关信息。

我们在提供 1 个空间和 3 个用户的入门包。

那么使用 Assembla 服务是否有可能?如果没有,是否有任何免费或同样便宜的选择可以做到这一点?

谢谢。

更新: 我决定对 Assembla 进行更深入的研究,看起来它不像 David 建议的那样提供这种细粒度控制。我从他们的支持论坛http://forum.assembla.com/forums/2-Subversion-and-Git/topics/3567-Team-permissions-to-different-repositories-in-the-same-space 找到了这些信息。

我想现在的问题是有没有人知道另一个 svn 托管解决方案可以提供这种用户级别控制?

【问题讨论】:

    标签: svn hosting


    【解决方案1】:

    Assembla 使您可以在同一个项目或他们称之为的空间中添加多个存储库,并且每个角色(观察者、成员、所有者)对这些存储库中的每一个都具有不同的权限。或者,您可以选择组合解决方案来管理具有不同团队和权限的单个组合中的多个空间。它是一个复杂的产品,可以做很多事情,只需要花时间更深入地检查它。

    【讨论】:

    • 欢呼BigAll。我可能应该更详细地研究 Assembla,但 VersionShelf 现在还可以,虽然有点慢。
    【解决方案2】:

    我[已经使用 Assembla 几个月了。这是我对这个主题的一点贡献。实际上,存储库和空间之间存在差异。如果您在 Assembla 中创建一个空间,您可以将多个存储库添加到同一个空间。空间只是您保存项目的地方。如果您转到“工具”部分下的空间的“管理”选项卡,您将找到在同一空间中添加另一个 svn 存储库的选项。是的,这是真的,如果您授予某个用户某些访问权限,那么该用户将获得对其余存储库的相同访问权限。因此,假设您希望某个用户拥有对 svn repo1 的编辑权限,而不是对 snv repo2 的编辑权限,那么您应该创建一个不同的空间来保存第二个 repo。

    希望对你有帮助!

    【讨论】:

    • 谢谢瓢虫。这些也是我的想法,因此认为它们不太符合我的要求。
    【解决方案3】:
    1. Assemlba 的 ACL 以 每个项目 为基础工作,而不是 每个 repo(即您授予对项目内所有 repo 的相同访问权限 所有和任何用户级别)
    2. 开放式存储库允许所有人进行读取访问
    3. 第 1 点和第 2 点的结果:如果您将用户添加到具有一个 repo 的项目中,那么在常见情况下(如果普通用户在项目之间共享)很容易找到其他“隐藏”repo
    4. 第 1 点和第 2 点和第 3 点的结果:如果你想要真正安全的 repo,你必须创建私有项目并收集其中的所有 repo

    【讨论】:

      【解决方案4】:

      我查看了 Assembla,但找不到任何信息,也不想创建空间。 Assmebla 是否允许您访问 Subversion 存储库服务器本身?如果没有,可能无法指定所需的详细信息。

      让我们在你的定义中直截了当:

      • 存储库:存储库是使用svnadmin create 命令创建的Subversion 目录。它可以包含一个项目或多个项目,每个项目都有自己的trunkbranchestags 目录。
      • 模块:这是 Subversion 存储库中的一个项目。单个存储库或单个模块中可能有多个模块。每个模块通常都包含自己的trunktagsbranches 目录。

      我相信 Assmebla 是在说 space 是一个单一的 Subversion 存储库。当您说多个存储库时,我假设您是在谈论单个存储库/空间中的多个模块。

      在 Subversion 中,如果您可以控制 Subversion 服务器和存储库目录本身,则可以控制每个用户的目录访问权限。这样,您可以拥有一个包含多个模块的存储库(我假设您有),并且您可以控制谁对每个模块具有读写权限。

      如果 Assembla 与大多数 Subversion 托管站点一样,它们不会让您直接访问服务器。取而代之的是,您使用他们提供给您的工具,并且很少有网站会给您提供工具来给您这种精细程度的控制。相反,用户可以访问存储库,也可以没有。 (并且该访问可以包括或不包括写访问)。

      如果您想在 Assembla 中为该承包商创建一个单独的存储库,您可能必须为该承包商创建第二个 空间 并支付两个空间的费用。

      关于 Subversion 的另一件事:您不能在存储库之间使用 svn copysvn merge 或使用 svn:external。我不知道最后一个是否对您来说是个问题。

      【讨论】:

      • 我不认为我说的是单个存储库空间中的多个模块。 Assembla 说您可以在一个空间中拥有多个存储库。它没有提到任何关于模块的公平性,只是空间和存储库。当我按照它的定义创建多个存储库时,签入的 url 是不同的,即 subversion.assembla.com/svn/repo.1subversion.assembla.com/svn/repo.2。我可以在其中添加多个项目并相应地签出。
      • 这是 Apache httpd,对吗? svn 是 Apache 中的一个配置点。这是您设置访问权限的地方。理论上,您可以设置更精细的访问权限,但很可能 Assembla 只让您能够说明谁可以登录以及他们是否具有只读或读写访问权限。根据 Apache 的设置方式,repos.1repos.2 可以是独立的存储库,也可以是同一存储库中的两个模块。不同之处在于钩子脚本以及您是否可以svn cp 或在两者之间合并。但是,为了访问,它们共享一个通用的 Apache 配置。
      【解决方案5】:

      此后,我环顾四周,相信我已经找到了针对我所追求的访问限制类型的 svn 解决方案。

      我现在正在研究的解决方案是VersionShelf。尽管它们在签入/签出方面似乎不如 Assembla 快(早期使用似乎表明了这一点),但它们似乎为每个存储库的访问限制提供了我需要的细粒度级别。

      同样,AssemblaUnfuddle(我也检查过)似乎在他们最需要的功能中包含此功能,因此在不久的将来这些解决方案可能会发生这种情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 2019-06-18
        • 1970-01-01
        • 2021-02-05
        • 2011-04-06
        • 1970-01-01
        相关资源
        最近更新 更多