svn两种架构

1,svn服务单独运行      

        此种方式下,svn密码明文显示,用户直接写进配置文件即可,运行服务需 (svnserve -d -r /share/apps/svn)客户端连接时用svn://

2,svn+apache 

       用户用htpasswd创建用户和密码,密码采用密文方式保存,服务依赖apache,不用像第一种方式打开svn服务,客户端直接访问apache即可,如http://ip/repos/xdata/......


apache+svn  需要安装模块 yum  mod_dav_svn

vim /etc/httpd/conf.d/subversion.conf 
 
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
 
<Location />
   DAV svn
   SVNParentPath /svn                              #根目录                           
      AuthType Basic
      AuthName "Authorization Realm" 
      AuthzSVNAccessFile /svn/authz                #验证的权限文件目录
      AuthUserFile /svn/passwd                     #密码文件,这个使用htpasswd方式新建的密文文件
      Require valid-user
</Location>

svn操作

svnadmin create project1                                    #创建项目
svn import /tmp/Xroad file:///svn/project1/ -m 'init'         #给项目上传版本库(不同的目录)

cat /svn/authz

[groups]
xbus = zhangsan,lisi,xiaoming
[groups]
xroad = zhangsan,lihua
[/]
zls = rw
 
[/Project1/Xroad]
@xroad = rw

客户端连接

http://127.0.0.1/Project1/Xroad

htpasswd 添加用户

htpasswd  -c /svn/passwd zls                        #-c是只新建passwd文件,只在htpasswd新建第一个用户时使用,否则会覆盖前面的信息htpasswd -b /svn/passwd  sisi  sisi123              #-b  采用非交互式新建用户



svn有自己的文件存储方式,svn服务跟目录下面的东西跟服务器本地目录没关系,都是由svn import 上传的

svn目录/svn

cd /svnsvnadmin create project1                                    svn的工程根目录是有svn创建的,创建工程project1mkdir -p  /tmp/svn/{trunk,tags,branch}svn import /tmp/svn file:///www/svn/repo1/ -m 'init'        svn import上传project1的下级目录
svnadmin create project1                                    svn的工程根目录是有svn创建的,创建工程project1
mkdir -p  /tmp/svn/{trunk,tags,branch}
svn import /tmp/svn file:///www/svn/repo1/ -m 'init'        svn import上传project1的下级目录