准备在公司配置局域网SVN。它需要建立在内部虚拟机服务器上。将搭建过程记录下来,以供参考。注:如果条件允许,尽量在windows下搭建一个svn服务器,非常方便,尤其是权限配置非常方便易懂,效果是一样的。首先,你需要搭建一个SVN服务器。如果确认没有svn,可以直接进入安装步骤准备安装,确保当前系统没有安装。svn使用命令,尝试查看是否安装了svnrpm-qasubversion或者,我们可以直接在所有文件中找到svn文件夹,使用如下命令查找,在任意文件目录下输入find/-namesvn,如果找到svn文件夹先确认是否是svn文件夹,有些软件内置了svn文件夹和相关服务,注意不要看错。例如:下面几行中的svn是redmine下的svn,所以不需要处理。如果svn存在,删除或卸载它。如果是压缩包安装,只能删除所有相关文件rm-rf[目标文件夹]如果是使用yum安装,则:yumremovesubversion出现确认输入y,直到卸载完成,使用命令rpm-qasubversion没有出现svn版本说明卸载成功svn安装执行如下命令(安装必须在网络下完成)安装svn及相关依赖包yuminstallsubversionyuminstallmod_dav_svnyuminstallhttpdhttpd-develsubversionmod_dav_svnmod_auth_mysql安装完成后,确认是否安装成功,在根目录下进入cd/etc/httpd/modules执行ls|grepsvn出现如下内容。mod_authz_svn.somod_dav_svn.so至此,svn服务器基本安装完成,SVN配置创建,代码库创建。可以省略)mkdir-p/usr/local/svn/repo创建版本库svnadmincreate/usr/local/svn/repo上面的位置是版本库的位置,文件中存放了版本库的相关信息版本库用户配置和配置文件修改进入配置文件目录cd/usr/local/svn/repo/conf修改svnserve.conf,去掉下面几栏的注释[general]anon-access=readauth-access=writepassword-db=passwdauthz-db=authz分别解释看上面四行的意思anon-access控制非认证用户访问版本库的权限。取值范围为“写入”、“读取”和“无”。即“write”表示可读写,“read”表示只读,“none”表示无访问权限。默认值为readauth-access,控制认证用户访问版本库的权限。取值范围为“写入”、“读取”和“无”。即“write”表示可读写,“read”表示只读,“none”表示无访问权限。默认值:writepassword-db指定用户名密码文件名。除非指定绝对路径,否则文件位置是相对于conf目录的。默认值:passwdauthz-db权限配置文件的名称,通过它可以实现基于路径的访问控制。除非指定绝对路径,否则文件位置是相对于conf目录的。默认值:authz修改passwd文件,该文件是一个打开的文件,里面存放着所有的账号和密码。添加账户信息[user]admin=123456root=rootadmin为登录用户名,123456为密码,回车拆分用户修改authz文件。该文件用于用户分组和权限配置。在[/]下添加[/]admin=rwroot=rw*=r进行说明。上面配置admin用户对根目录下的所有文件具有rw(read,write)读写权限,其他用户用*代替,其他用户只有读权限。至此,svn服务器的基本配置和用户配置已经完成。在svn客户端可以访问地址svn://ip。注意我们使用svn协议来完成对svn库的访问组和文件夹权限的配置在实际开发中会使用不同的组对svn账号进行分类,进而实现对组用户的权限控制,在[groups]下添加在authz文件中,将多个组成员用“,”隔开上面Open[groups]group1=admingroup2=root是将amdin分配给group1,root分配给group2。在[/]下添加[/]@group1=rw@group2=rw*=r批量组权限控制文件夹权限配置假设我们在版本库根目录下有两个文件夹,分别是用户文件夹和项目文件夹。现在设置用户文件夹,只有group1可以读写,其他用户组只能读,而项目文件夹只有group2可以读写,group1只有读权限,其他用户不可见(注意最后一行)。我们可以在authz文件中添加如下配置[/user]@group1=rw*=r[/project]@group2=rw@group1=r*=注意:配置文件夹权限时,必须为每个文件夹分配权限为仓库里有多少文件夹,不然不行~
