今天早上,我尝试对Subversion进行修订,发现突然间我没有这样做的许可.
Can't move '/svn/db/txn-protorevs/21000-ga9.rev' to '/svn/db/revs/21/21001': Permission Denied
看一下revs目录,我注意到有人提交了第21000个修订版,并且由于某种原因缺少新目录的组写权限.
drwxrwsr-x 2 svn svn 24K 2008-10-27 10:04 19 drwxrwsr-x 2 svn svn 24K 2008-12-18 07:13 20 drwxr-sr-x 2 jeff svn 4.0K 2008-12-18 11:18 21
在该目录上设置组写权限允许我提交,所以我很适合另外1000个修订.但为什么会发生这种情况,我可以改变什么以确保它不会再发生?
如果您有多个开发人员通过file://
协议访问存储库,您可能需要考虑设置Subversion服务器(使用svnserve
或Apache).使用该解决方案,服务器本身负责存储库文件的所有访问和权限,您将不会遇到此问题.
来自SVN书:
不要不具有所有用户的简单的想法所吸引直接访问版本库
file://
的URL.即使存储库通过网络共享随时可供所有人使用,这也是一个坏主意.它删除了用户和存储库之间的任何保护层:用户可能会意外(或故意)破坏存储库数据库,使存储库脱机以进行检查或升级变得困难,并且可能导致文件权限问题混乱(请参阅"支持多个存储库访问方法"一节.请注意,这也是我们警告不要通过svn+ssh://
URL 访问存储库的原因之一- 从安全角度来看,它实际上与本地用户通过URL 访问相同file://
如果管理员不小心,它可能会带来所有相同的问题.