最近在我用subversion论坛(http://www.iusesvn.com/bbs)经常有人提到这样的问题:
为什么我的客户端没有写权限?
为什么我的权限没有起作用?
总结他们的配置,发现
都是用svnserve作为服务器,
都在svnserve.conf中使用了authz-db选项
原因可能如下:
1,配置authz时,没有注意svnserve启动参数-r所指定的目录。
这里有两种情况:
a:-r直接指定到版本库(称之为单库svnserve方式)
比如,有一个库project1,位于d:\svn\project1
使用以下命令启动svnserve svnserve -d -r d:\svn\project1
复制代码在这种情况下,一个svnserve只能为一个版本库工作
authz文件如果配置成下面这样就是错的, [groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
复制代码应该配置成 [groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
复制代码因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的url:svn://192.168.0.1/ 即可访问project1
b:-r指定到版本库的上级目录(称之为多库svnserve方式)
同样,有一个库project1,位于d:\svn\project1
如果使用以下命令启动svnserve svnserve -d -r d:\svn
复制代码这种情况,一个svnserve可以为多个版本库工作,
这时如果想限制指定库的指定目录,就应该指定具体的库,像这样 [groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
复制代码如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录
使用类似这样的url:svn://192.168.0.1/project1 即可访问project1
这样的url:svn://192.168.0.1/project2 即可访问project2
2,对中文目录进行权限控制时,没有将权限文件authz改为utf-8格式。
svn对于非英文文件名和目录名使用utf-8格式编码处理,要对中文目录进行正确控制,
应该使用无bom的utf-8格式,如何将默认的文件转为utf-8,
我使用的是ultraedit的菜单"ascii to utf-8 (unicode editing)"。在ultraedit的配置中,可以设置有无bom
更多参考文档:
(配置权限控制文件)http://bbs.iusesvn.com/thread-6-1-1.html
(中文目录权限控制)http://bbs.iusesvn.com/thread-41-1-1.html
(apache的单库多库问题)http://bbs.iusesvn.com/thread-158-1-1.html
为什么我的客户端没有写权限?
为什么我的权限没有起作用?
总结他们的配置,发现
都是用svnserve作为服务器,
都在svnserve.conf中使用了authz-db选项
原因可能如下:
1,配置authz时,没有注意svnserve启动参数-r所指定的目录。
这里有两种情况:
a:-r直接指定到版本库(称之为单库svnserve方式)
比如,有一个库project1,位于d:\svn\project1
使用以下命令启动svnserve svnserve -d -r d:\svn\project1
复制代码在这种情况下,一个svnserve只能为一个版本库工作
authz文件如果配置成下面这样就是错的, [groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
复制代码应该配置成 [groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
复制代码因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的url:svn://192.168.0.1/ 即可访问project1
b:-r指定到版本库的上级目录(称之为多库svnserve方式)
同样,有一个库project1,位于d:\svn\project1
如果使用以下命令启动svnserve svnserve -d -r d:\svn
复制代码这种情况,一个svnserve可以为多个版本库工作,
这时如果想限制指定库的指定目录,就应该指定具体的库,像这样 [groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
复制代码如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录
使用类似这样的url:svn://192.168.0.1/project1 即可访问project1
这样的url:svn://192.168.0.1/project2 即可访问project2
2,对中文目录进行权限控制时,没有将权限文件authz改为utf-8格式。
svn对于非英文文件名和目录名使用utf-8格式编码处理,要对中文目录进行正确控制,
应该使用无bom的utf-8格式,如何将默认的文件转为utf-8,
我使用的是ultraedit的菜单"ascii to utf-8 (unicode editing)"。在ultraedit的配置中,可以设置有无bom
更多参考文档:
(配置权限控制文件)http://bbs.iusesvn.com/thread-6-1-1.html
(中文目录权限控制)http://bbs.iusesvn.com/thread-41-1-1.html
(apache的单库多库问题)http://bbs.iusesvn.com/thread-158-1-1.html