zoukankan      html  css  js  c++  java
  • linux(CentOS release 6.5)环境搭建svn

      正文之前,说几句关于svn和git的闲话。 

      之前用的版本控制工具主要都是svn,随着时间的推移,git以其强大灵活的分支管理功能受到大众喜爱。尤其是多人同时开发时同一项目,且不同部分功能时,git的分支管理功能显得尤为强大。并且git代码库的分布式管理,使得各个客户端代码库对服务器代码库的依赖大大减弱,代码管理灵活而又强大。

      上一个公司的项目类型就是那种,同一个项目多人开发不同模块功能,并且上线时间各个不同。版本控制工具一直在用git,对于公司项目的情况,还是充分发挥了git的多分支管理功能,项目开发也算是有条不紊。后期空降到公司一个cto,cto之前是用的svn,没有用过git,然后要求我们都统一改换svn作为版本控制工作。项目开发感觉捉襟见肘。=_=!。

      当然今天写这个博客跟以上没有什么必然联系。小伙伴们自己买了个服务器,之前在上面搭建了个svn。后来系统崩了,重装了系统,svn也没了。有个小伙伴最近要做东西,让我再搭一下。上次搭过一次,感觉不费什么事。然而操作起来也是各种google和百度,好多也记不住了。所以这次写个博客权作笔记了。当然只是svn最基本代码管理功能。

      1.先看看服务器上是不是已经安装svn了。

    svnserve --version  //或者 svn --version

      如果已经安装了svn了,那么会显示svn的版本信息。

      

      如果提示是错误命令,那就是服务器还未安装svn。需要你来安装svn了。当然如果已经安装了,你也可以卸载掉旧版本(yum remove subversion),来安装新版本的svn。 

    yum install subversion

      2.svn安装完成后,就可以创建版本库了。

    svnadmin create /opt/svn/repository

      可能出现的问题,不存在相应的目录结构。opt是服务器根目录是存在的,而svn这个目录结构可能是不存在的。

      

      这个解决方法,只需在opt目录下创建svn目录就可以了(mkdir svn)。 

      3.svn代码库创建成功后,查看repository目录下。 已经conf, db, format, hooks, locks, README.txt等文件。进入conf目录,代码库的配置文件在该目录下。有以下几个文件authz, passwd, svnserve.conf。其中authz是权限控制,可以设置哪些用户可以访问哪些目录,passwd是设置用户和密码的,svnserve.conf是设置svn相关操作的。

      a. svnserve.conf文件

      [general]  
      #匿名访问的权限,可为none,read,write  
      anon-access = none  
    
      #授权用户的权限,可为none,read,write  
      auth-access = write  
    
      #密码数据文件的路径,如不以/开头,则为相对路径  
      password-db = passwd  
    
      #访问控制文件的路径,如不以/开头,则为相对路径  
      authz-db = authz  
    
      #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字,不同的代码库需要不同的realm  
       #我们之前创建的仓库repository,此处为此仓库名
      realm = repository

      b.passwd文件

      [users]  
      #用来设置账户及密码,此处我们建立三个账户
      admin = 123456
      xiaohua = 123465
      xiaopeng = 123456

      c.authz文件,该文件用来控制不同用户对不同目录的访问权限。

      #可以将passwd中建立的账户,划分到不同组中,组名由自己定义。此处我们定义两个组admin(管理员)和developer(开发人员组)。
       [groups]  
      admin = admin
      developer = xiaohua,xiaopeng
    
      #定义不同目录的访问权限,设置我们之前创建的repository根目录权限。
      [repository:/]
      #设置admin组中成员,对本目录有读(r)和写(
    w)权限   @admin = rw
      #设置developer组中的成员,对本目录只有读(r)权限   @developer
    = r   #设置其他访问者,对本目录无任何权限   * =   #设置repository目录下,test目录(test后不要加/)权限。   [repository:/test]   @developer = rw   * =

      此处的@表示组名([groups]),当然去掉@符号,也可以直接账号来限制权限。xiaohua = rw,表示只对xiaohua这个账户具有读写权限。

     

      4.配置文件设置好以后,需要确定下,防火墙对svn默认的端口3690是打开的。

    vi /etc/sysconfig/iptables

      添加以下内容:

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

      保存后重启防火墙

    service iptables restart

      5.svn的启动与停止。

      启动svn服务

    svnserve -d -r /opt/svn/repository

      -d:守护进程 -r:svn根目录。启动时可以设置启动的端口,svnserve -d -r /opt/svn/repository --listen-port 3691。如果不设置则默认为3690。

      如果要停止svn服务,可以通过kill进程id的方式来实现。

      ps aux|grep svn   #找到svnserve服务pid
      kill -9 pid  #结束进程

      6.客户端(比如我们本地的计算机)安装svn工具(比如 TortoiseSVN)后,就可以在本地checkout出我们在服务器上搭建的代码库了,地址:svn://服务器ip/repository。

     

      以上。欢迎指正交流。

      相关参考:http://www.centoscn.com/CentosServer/ftp/2015/0115/4504.html
                        http://www.jianshu.com/p/0a5e59e4532f
             http://www.cnblogs.com/terryglp/articles/2451398.html

  • 相关阅读:
    HDU4628+状态压缩DP
    Javascript 去掉字符串前后空格的五种方法
    Javascript 数组之判断取值和数组取值
    ASP.NET MVC 出现错误 “The view 'XXX' or its master was not found or no view engine support”
    ASP.NET MVC 页面调整并传递参数
    ASP.NET MV3 部署网站 报"Could not load file or assembly ' System.Web.Helpers “ 错的解决方法
    ASP.NET MVC 控制器向View传值的三种方法
    CSharp 如何通过拼接XML调用存储过程来查询数据
    SQLServer : EXEC和sp_executesql的区别
    关于SQLServer2005的学习笔记—异常捕获及处理
  • 原文地址:https://www.cnblogs.com/chenxl/p/6736418.html
Copyright © 2011-2022 走看看