我正在为不同的群组和用户使用带有访问控制的subversion。到目前为止,我一直在使用" r"或" w"标志,以授予阅读或写作权利,但我想知道是否有可能(或模拟)"追加"旗。我想要实现的是用户可以上传新文件并阅读旧文件而无法修改或删除它们。有没有办法在subversion中实现这个功能?谢谢
答案 0 :(得分:1)
Subversion没有这样的设施。只有两个访问级别 - 读取存储库的能力以及修改存储库状态的能力。写入是一种写入 - 存储库内容更改的类型之间没有区别。
如果有人做了他们不应该做的事情,你就可以恢复任何改变(这是版本控制系统的重点)。
答案 1 :(得分:1)
虽然@alroc在技术上正确("追加"即使在计划中也存在访问规则),但他忘了一件事:"我们可以重新发明轮子"
我为您的任务看到至少2种可能的(某种程度上是部分的)解决方案:
Pro :具有良好的可扩展性,正在进行零管理,不需要基于路径的工作授权, 反对:阻止 - 可能会分散用户的注意力
<强>实施强>:
预提交挂钩,检查事务中所有文件的状态(读取svnlook changed
命令)并在找到D
| M
文件时禁用提交(仅启用A
)
Pro :无阻塞,可以很容易实现自动化 Contra :可扩展性差(在repo中每个文件 2个字符串的巨型authz文件),需要支持基于路径的授权
<强>实施强>:
Section in authz-file may refer to directory or to even single file:
请注意,虽然前面的所有示例都使用了目录,但这些目录都是如此 只是因为在目录上定义访问规则是最常见的 案件。您也可以类似地限制文件路径上的访问。
因此,口头规则&#34;可以将文件添加到目录,无法编辑&#34;将文件/foo/bar.ext
转换为此类authz-strings(脏草稿)
[/foo]
* = rw
[/foo/bar.ext]
* = r
即:你可以写入dir(添加新文件),不能写入dir中的文件。并且每个添加的文件都需要自己的部分来禁用编辑(提交后挂钩可以收集添加文件的列表并动态修改authz文件)。
这种方法不影响删除操作,为了防止删除你可以: