我们计划制定一项政策,以防止提交到主干。所有提交都必须针对分支机构进行。
我应该采取什么方法来完成这项工作?
答案 0 :(得分:4)
请参阅svn documentation。 IT表示apache和svnserve都支持基于路径的授权。另外,从文档:
您真的需要基于路径的访问吗? 控制吗
许多管理员设置 Subversion第一次倾向于 跳转到基于路径的访问控制 没有给它太多的思考。 管理员通常知道哪个 人们正在研究哪些人 项目,所以很容易进入和 授予某些团队访问权限 目录而非其他目录。它似乎 像一个自然的东西,它安抚 管理员的维护愿望 严格控制存储库。
但请注意,经常有 无形(和可见!)成本 与此功能相关联。在里面 可见类别,服务器需要 做更多的工作来确保 用户有权阅读或写作 每条特定的路径;在某些 情况,非常明显 性能损失。在无形中 类别,考虑你的文化 创建。大多数时候,同时 某些用户不应该提交 改变了某些部分 存储库,即社会契约 不需要技术上的 强制执行。团队有时可以 自发地与每个人合作 其他;有人可能想帮忙 其他人通过承诺来 她通常不会工作的地方。通过 在这种情况下阻止这种事情 服务器级别,你正在设置 意外合作的障碍。 你也在制作一堆规则 需要作为项目进行维护 开发,添加新用户等等 上。这是一堆额外的工作 维护。
请记住,这是一个版本 控制系统!即使有人 意外地改变了 他们不应该做的事情,这很容易 撤消更改。如果用户提交 刻意地到了错误的地方 恶意,那么这是一个社会问题 无论如何,问题需要 在Subversion之外处理。
答案 1 :(得分:3)
如果你不能承诺,你会让我想知道trunk的用途是什么。但预提交钩子提供了一种方法来实现这一点。另请参阅here。
/usr/share/subversion/hook-scripts/commit-access-control.pl
。在Ubuntu上,它位于subversion-tools包中。hooks/pre-commit.tmpl
脚本复制到hooks/pre-commit
并使其可执行。commit-access-control.cfg
。像这样(未经测试):[StackOverflow的解析器好像坏了,这里需要一个段落]
[Make trunk read-only]
match = ^trunk
access = read-only
答案 2 :(得分:1)
只需写一个简单的post-commit钩子。您可以将此示例用于指导http://wordaligned.org/articles/a-subversion-pre-commit-hook
在您的脚本中,只需检查他们提交的URL,并拒绝修改主干URL的所有事务
但是,您需要指定一个可以将分支合并到主干中的人,您的预提交钩子应该检查主用户名或其他一些身份验证机制并允许合并到主干