前言
为了更好的管理svn我针对相应的用户给予了权限,防止乱拷代码。
第一:用户的配置
SVN和apache整合的话,用户可以直接使用htpasswd dav_svn.passwd_file_address USERNAME来配置。
而账户的管理可以用dav_svn.authz来配置
前面那个passwd文件保存的是用户的基本信息,就不列了。而另外那个dav_svn.authz文件的内容如下:
[xhtml]
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
sendsrt = root,utt1
sendsdeveloper = ttt12
other = seb3
[/]
@sendsrt = rw
* =
[test:/]
@sendrt = rw
ttt12 =rw
* =
[utt1:/]
@sendsrt = rw
utt1 = rw
* =
[utt1:/testProject]
@sendsdeveloper = rw
实际上,上面的这个文本已经基本说明了用户权限配置的情况了。[groups]里面表示的是分组信息,每个组=用户
而下面的[/]表示的是整个SVN的所有库,因为我在apache下面访问的时候的做过别名,所以是http://localhost/svn/
[test:/]表示的就是test这个库和相对这个库的根目录,实际上代表的是http://localhost/svn/test/
[utt1:/testProject]其实utt1这个库有地方说的就是这里,http://localhost/svn/utt1/testProject目录,这里控制了sendsdeveloper组成员仅对这个目录具有读写权限。不像http://www.subversion.org.cn/bbs/viewthread.php?tid=520这篇文章的作者的血泪经验,实际上,这样的目录设置是通过了我自己的测试的,这个标志代表的是相对于utt1这个版本库目录下的testProject目录,而那位作者有了问题恐怕是在于他自己签入签出库的时候使文件夹出了问题吧。
权限上,r,w分别表示读写,下面那个* = 表示除了上面写的之外,都没有任何权限,因为svn的目录权限也是继承的,如果不禁的话,父目录有权限的话,子目录会自动继承。另外,这个 *=在一个库的权限设置里面放在第一行和最后一行是没有区别的。
总结:日积月累!