代码之家  ›  专栏  ›  技术社区  ›  publicRavi

svn:限制对授权用户的中继提交

  •  3
  • publicRavi  · 技术社区  · 15 年前

    我们正计划制定一项防止提交到主干的策略。所有提交都必须发生在分支上。

    我应该怎样做才能完成这件事?

    3 回复  |  直到 15 年前
        1
  •  4
  •   amit kumar    15 年前

    svn documentation . 它说apache和svnserve都支持基于路径的授权。此外,从文件中:

    你真的需要基于路径的访问吗 控制?

    很多管理员 第一次颠覆倾向于 跳转到基于路径的访问控制 却没有考虑太多。 管理员通常知道 一队人正在研究 项目,所以很容易跳进去 授予某些团队访问某些 目录而不是其他。似乎 就像一件自然的东西 管理者希望 对存储库的严格控制。

    不过,请注意,通常 看不见(也看不见!)成本 与此功能关联。在 可见类别,服务器需要 做更多的工作来确保 用户有权读写 每个特定的路径;在特定的 情况很明显 性能损失。在无形中 类别,考虑你的文化 创建。大多数时候, 某些用户不应该提交 对某些部分的更改 仓库,社会契约 不需要技术 强制执行的团队有时可以 自发地与每个人合作 其他;可能有人想帮忙 其他人承诺 她通常不工作的地方。通过 防止这种事情发生在 服务器级别,您正在设置 意外合作的障碍。 你还制定了一系列规则 需要作为项目进行维护的 开发,添加新用户,等等 在。这是一堆额外的工作 维护。

    记住这是一个版本 控制系统!即使有人 意外地将更改提交到 他们不该做的事,很容易 撤消更改。如果用户提交 故意去错地方 恶意,那是个社会问题 不管怎样,问题是 在颠覆之外被处理。

        2
  •  3
  •   Thomas    15 年前

    你让我想知道,如果你不能承诺,后备箱的用途是什么。但预提交挂钩提供了一种方法。也见 here .

    1. 确保你有 /usr/share/subversion/hook-scripts/commit-access-control.pl . 在ubuntu上,它在subversion工具包中。
    2. 转到存储库目录,复制 hooks/pre-commit.tmpl 脚本进入 hooks/pre-commit 并使其可执行。
    3. 根据你的口味修改。我认为违约是合理的。
    4. commit-access-control.cfg 在存储库目录中。类似这样的东西(未经测试):

    [stackoverflow的语法分析器好像坏了,这里需要一个段落]

    [Make trunk read-only]
    match = ^trunk
    access = read-only
    
        3
  •  1
  •   Vlad    15 年前

    只需编写一个简单的提交后挂钩。你可以用这个例子来指导 http://wordaligned.org/articles/a-subversion-pre-commit-hook

    在脚本中,只需检查它们提交到的url,并拒绝修改中继url的所有事务

    但是,您需要指定一个可以将分支合并到主干中的人,您的预提交钩子应该检查master username或其他一些authentication机制,并允许合并到主干中