svn服务器两种运行方式:独立和借助apache



存储数据:两种方式BDB(事物安全表类型)和FSFS(不需要数据库的存储系统),使用BDB方式在服务器中断时,可能锁住数据,使用FSFS方式安全点。



一,下载相关软件:



[root@youxia201 test]# wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz



[root@youxia201 test]# wget http://subversion.tigris.org/downloads/subversion-deps-1.6.1.tar.gz



二、编译SVN


#tar xzvf subversion-1.6.1.tar.gz 
 
  
#tar zxvf subversion-deps-1.6.1.tar.gz 
 
  
# cd subversion-1.6.1
 
  
#./configure –prefix=/opt/svn–without-berkeley-db–with-zlib
 
  
#make  ;  make install



三、SVN服务器配置



#SVN服务器配置,建立2个仓库,因为在服务器中可能有多个项目同时运行


mkdir -p   /opt/svndata/repos1 
   
 
   

     mkdir -p  /opt/svndata/repos2



四、建立svn版本库,建立完之后会生成配置文件和其它子目录



svnadmin create /opt/svndata/repos1 
    
 
    

      svnadmin create /opt/svndata/repos2



五、修改配置文件,注意不同点



repos1/conf/svnserve.conf  
   
 
   

     [general] 
   
 
   
#使非授权用户无法访问
 
   

     auth-access = write     #使授权人用户有写权限 
   
 
   

     password-db = /usr/local/svn/conf/passwd 
   
 
   

     authz-db = /usr/local/svn/conf/authz 
   
 
   
 repos1  #认证命名空间,客户端会在认证提示里面显示 
   
 
   
 
     
   
     
    
repos2/conf/svnserve.conf  
    
 
    

      [general] 
    
 
    

      anon-access = none 
    
 
    

      auth-access = write 
    
 
    

      password-db = /usr/local/svn/conf/passwd 
    
 
    

      authz-db = /usr/local/svn/conf/authz 
    
 
    
  
     repos2



六、修改权限密码文件,配置文件修改立即生效,不用重启,2个项目库公用一个密码和认证文件



# cat /usr/local/svn/conf/passwd 



[users]



zhao = 123456



lee    =  654321



# cat /usr/local/svn/conf/authz 



[groups]



admin = zhao




 



[/]                                        #表示根目录,根目录是指svnserve启动时指定的,比如/opt/svndata目录,表示对全部版本库设置权限



@admin = rw




 



[repos1:/abc/aaa]



lee = rw




 



[repos2:/pass]



lee = 




 




 



authz 说明:



[groups]



<用户组> = <用户1>,<用户2>



[<版本库>:/项目/目录]



@<用户组名> = <权限>



<用户名> = <权限>



/表示根目录及以下,根目录是svnserve启动时指定的,刚才指定的为/opt/svndata,这样/就是表示对全部版本库设置权限



repos1:/表示对版本库1设置权限



repos2:/abc对版本库2中的abc项目设置权限



repos2:/abc/aaa对版本库2中的abc项目的aaa目录设置权限



7.svn配置完毕,删除无用文件


rm  /opt/svndata/repos1/conf/authz 
     
 
     

       rm  /opt/svndata/repos1/conf/passwd 
     
 
     

       rm  /opt/svndata/repos2/conf/authz 
     
 
     

       rm  /opt/svndata/repos2/conf/passwd


8、启动SVN



svnserve -d -r /opt/svndata



-d:以daemon方式后台运行



-r :指定根目录/opt/svndata



#项目导入,在linux上先将源代码目录run里面的东西导入在svn仓库中的db里面,这样在windows客户端checkout就可导出来了,显示的就是代码


#svn import run/   file:///opt/svndata/repos2/  -m "initial import"


run目录就是源代码目录






在Linux上进行windows的check等操作



1、将项目2中代码check出来放在网站应用指定的目录中,这个和windows一样



co就是check的意思
 
   
svn co svn://127.0.0.1/repos2 /home/web/repos2  
 
   
2、使用svnadmin create建立的版本库下面会有一个hooks目录,里面有很多钩子程序,这样也就是在windows上commit操作提交后就会自动执行post-commit钩子程序
 
   
cd  /opt/svndata/repos1/hooks              不同版本目录不一样
 
    
vi   post-commit
 
    
#!/bin/bash
 
    
export LANG=en_US.UTF-8
 
    
export LC_ALL=en_US.UTF-8
 
    

 
    
/usr/bin/svn update /home/web/repos1 --username zhao --password 123456



保存后,加上权限



chmoe  +x    post-commit 



这样在windows传完新代码文件后就会自动的指定钩子程序自动同步到代码目录中去






这里的各配置项意思是:



anon-access指匿名访问的权限,可以是read,write,none,默认为read,这个建议配为none



auth-access指认证用户的权限,可以是read,write,none,默认为write



password-db指密码数据库的路径,去掉前面的,存的是认证用户的用户名和密码,



username=passwd



authz-db实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限


转载于:https://blog.51cto.com/zhaochen/808000