在svn create之后,比如创建了一个myproject项目,myproject目录下会生成许多文件,配置文件位于myproject/conf下。需要改的地方有svnserve.conf, passwd, authz。
首先,svnserve.conf把以下行的注释去掉。
anon-access = read (匿名用户只读,也可以设成none,不可访问)
auth-access = write
password-db = passwd (svn密码文件,如果有多个项目,建议将该文件放到公共位置)
authz-db = authz (目录权限文件,建议同上)
real = My First Repository (认证域,相同认证域下的项目使用相同的passwd和authz,暂时不用理会)
接下来,passwd文件中添加明文的用户名/密码。authz文件中设置别名和用户组,并针对不同目录对不同的用户或组分配权限(r,w,rw)。设置权限时,用户组前面要加@,别名前面要加&。
这样配置好后,就可以通过svn://来访问了。
如果要想通过Apache来访问svn,还需要进行下面的配置。
假定Apache服务器已经安装好。
1. 创建一个svn用户组,将www-data(apache的默认用户名)加入到svn组中。
2. 将资源库的owner设成www-data,group设成svn。下面三条用于修改权限
sudo chown -R www-data myproject
sudo chgrp -R svn myproject
sudo chmod -R g+rwx myproject 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交
3. 确认libapache2-svn已经安装,/etc/apache2/mods-enabled下面有dav.load,dav_svn.load和dav_svn.conf三个文件。
4. 修改dav_svn.conf文件。去掉下面行的注释。
<Location /svn> (apache下的位置)
DAV svn
SVNPath /home/svn/myproject (指明资源库的路径)
或
SVNParentPath /home/svn (如果有多个库,使用该选项)
SVNListParentPath on (打开这个选项可以列出ParentPath下面的所有库)
AuthType Basic (认证类型为基本认证 )
AuthName "Subversion Repository" (认证名称,将在IE界面弹出一个对话框,其标题)
AuthUserFile /etc/apache2/dav_svn.passwd (认证密码文件)
# AuthzSVNAcessFile /etc/apache2/dav_svn.authz (目录权限文件)
Require valid-user (要求验证用户,即不能匿名访问)
</Location>
5. 通过sudo htpasswd -c /etc/apache2/dav_svn.passwd abc创建用户abc并按照提示设置密码,网页认证的时候使用该用户名和密码登录。后面再添加用户的时候去掉-c选项。
配好以后就可以通过Http页面来访问SVN了。