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

  • 相关阅读:
    调试STM32/8 程序一些浅显又不易发现的问题
    MS5611 转换时间和精度的关系
    matlab 实用快捷键
    计算机中十六进制数对应的内存大小速记
    matlab 基本变量和函数
    自定义Button形状(圆形、椭圆)
    Android:自定义标题栏
    Python-21-socket编程
    Python-20-异常处理
    Python-19-元类
  • 原文地址:https://www.cnblogs.com/chenxl/p/6736418.html
Copyright © 2011-2022 走看看