简介
subversion(简称svn)是近年来崛起的版本管理软件系统,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。
Subversion是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。

一、所需软件环境检查:
  1.apr  apr-util zlib 这几个软件请参阅《LAMP基础环境搭建》中的安装路径或安装方法。
 
  2.还需要SQLite
    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
   
    而SQLite的使用方案有两种:
    方案一:可以只解压sqlite-amalgamation包,将解压文件拷贝到subversion解压后的源码安装目录中去。           
            官方解释:This ZIP archive contains all C source code for SQLite 3.8.1 combined into a single source file.
            译:这个zip文件是融合了SQLite 3.8.1所有C源代码的单一文件。
            换句话说:它只是源文件,没有配置安装文件,所以不能用来完整安装。

方案二:安装Sqlite数据库完整软件包,在编译subversion时加上 --with-sqlite=/usr/local/sqlite/ 选项
            官方解释:A tarball containing the amalgamation for SQLite 3.8.1 together with an configure script and makefile for building it.
            译:一个融合了SQLite 3.8.1源代码,并包含配置脚本configure及编译文件makefile的打包文件。
            换句话说:这个源码包是可以按常规步骤编译安装的。

二、执行安装(两安装方案任选其一)

方案一:可以只解压sqlite-amalgamation包,将解压文件拷贝到subversion解压后的源码安装目录中去。
            A.解压 sqlite-amalgamation 源码包
              # unzip sqlite-amalgamation-3080100.zip

B.解压 subversion 软件包:
              # tar -zxvf subversion-1.8.4.tar.gz

C.拷贝 sqlite-amalgamation 源码包到 subversion 解压包中,并更名为sqlite-amalgamation
              注:假定sqlite包与subversion包是解压在同级目录的。
              # cp -r ./sqlite-amalgamation-3080100 ./subversion-1.8.4/sqlite-amalgamation

D.进入subversion解压目录,配置编译
              # cd subversion-1.8.4
              # ./configure --prefix=/usr/local/subversion/ --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ --with-zlib=/usr/local/zlib/ --enable-maintainer-mode
              # make
              # make install

方案二:安装Sqlite数据库完整软件包,在编译 subversion 时加上 --with-sqlite=/usr/local/sqlite/ 选项

注1: 确认已安装apr  apr-util  zlib软件包 此处略述... 请参阅《LAMP基础环境搭建》
    
            注2: 关于Sqlite数据库安装方法,此处略述... 请参阅《sqlite数据库安装配置》

# tar -zxvf subversion-1.8.4.tar.gz && cd subversion-1.8.4
            # ./configure --prefix=/usr/local/subversion/ --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ --with-zlib=/usr/local/zlib/ --with-sqlite=/usr/local/sqlite/ --enable-maintainer-mode
     
               选项解析
               --prefix=/usr/local/subversion/             指定subversion要安装的目录
               --with-apr=/usr/local/apr-httpd/            指定apr对应安装目录
               --with-apr-util=/usr/local/apr-util-httpd/  指定apr-util对应安装目录
               --with-zlib=/usr/local/zlib/                指定zlib对应安装目录
               --with-sqlite=/usr/local/sqlite/            指定sqlite对应安装目录
               --enable-maintainer-mode                    启用调试提醒模式

# make
            # make install

三、测试是否安装成功(如果看到版本信息说明成功)
    # /usr/local/subversion/bin/svnserve --version

四、可以将SVN相关命令添加到环境变量搜索路径
    # echo "# 添加subversion环境变量:" >> /etc/profile
    # echo "PATH=$PATH:/usr/local/subversion/bin" >> /etc/profile
    # export PATH
    # source /etc/profile

五、配置subversion
  1.建立版本库总目录: /opt/mySVNdata(目录位置可以自定)
    # mkdir -p /opt/mySVNdata    版本库总目录

2.在版本库目录中 创建第1个“项目版本库”命名为:martinZFsvn ;第2个为项目命名为:martinTP
    # svnadmin create /opt/mySVNdata/martinZFsvn  //第1个项目
    # svnadmin create /opt/mySVNdata/martinTP     //第2个项目

注:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import命令将文件导入版本库。此为svn内部指令,create用于新建版本库。请使用svn help查看详细使用说明。

3.编辑新建的“项目版本库 martinZFsvn ”的配置文件 svnserve.conf
    “项目版本库 martinZFsvn ”创建生成时,会在其目录下一同创建:conf db ...几个文件,conf为配置文件目录。

# vi /opt/mySVNdata/martinZFsvn/conf/svnserve.conf

参考约第19 20行,添加:
    anon-access = none         # 设置非授权用户无法访问
    auth-access = write        # 设置授权用户有写权限

参考约第29行,添加:
    password-db = passwd       # 指定用于存放用户/密码的配置文件名(在conf目录中,也可以自己更名)

参考约第39行,添加:
    authz-db = authz           # 指定用于存放权限控制的文件名(在conf目录中,也可以自己更名)

参考约第51行,添加:
    realm = realm_martinZFsvn  # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
    官方解释:指定了Repository的验证领域。如果两个Repository有相同的验证领域,那么它们应该有相同的密码数据库,反之亦然。默认的领域就是指向当前的Repository的路径,与服务器的Repository的根目录相关。

4.编辑用户/密码配置文件 passwd ,并添加用户

# vi /opt/mySVNdata/martinZFsvn/conf/passwd

在[users]里添加几个用户及对应密码,如:
    [users]   
    martin1 = 12345
    martin2 = 123456
    grptest1 = 123
    grptest2 = 456

5.编辑权限配置文件 authz ,对用户授权

# vi /opt/mySVNdata/martinZFsvn/conf/authz

A.如果想对用户分组管理:
      在组区块[groups]添加:
      group1 = grptest1,grptest2  # 比如组名为group1;多个组成员用逗号分割(如:grptest1,grptest2)

B.在最末尾添加:   
      [/]                   [/]表示对项目的根目录设置权限
      martin1 = r           读
      martin2 = rw          读写
      @group1 = rw          读【对组授权要加 @】

注:只读r,写w;没有列出的用户没有任何权限,不允许访问;
       
    C.也可单独对项目根下的某个目录设置权限:
      [/db_config]          [/db_config]表示项目根目录下的“db_config”文件夹的设置权限
      @group1 = r           读【对组授权要加 @】

注:“db_config”这个文件件怎么创建?这是在SVN服务器配置好之后,让一个权限很高的用户在客户端登录SVN,然后创建此目录。

通过上面配置达到目的: A.martin1对根下所有目录有r权限;
                            B.martin2对根下所有目录有rw权限;
                            C.group1组成员对根下所有目录有rw权限,但对/db_config只有r权限;

六、启动svn服务
    # /usr/local/subversion/bin/svnserve -d -r  /opt/mySVNdata

选项解析:
      --listen-port=3690 3690是默认端口,可以使用“--listen-port=3690” 来显式指定其它端口。
      -d 指明以守护模式运行(后台运行),
      -r 选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问(svn://192.168.1.xx/martinZFsvn),而不用提供完整路径(svn://192.168.1.xx/opt/mySVNdata/martinZFsvn)
         /opt/mySVNdata 是版本库目录(绝对路径)

查看状态:
    # ps -le | grep svnserve
    # netstat -tunpl | grep svnserve

设置随系统自启动:
    # echo "# subversion随系统自启动:" >> /etc/rc.d/rc.local
    # echo "/usr/local/subversion/bin/svnserve -d -r  /opt/mySVNdata" >> /etc/rc.d/rc.local

关闭svn服务
    # killall svnserve

七、windows客户端连接
    svn://192.168.1.xx/martinZFsvn   # 访问第1个项目
    svn://192.168.1.xx/martinTP      # 访问第2个项目

subversion(SVN)安装配置的更多相关文章

  1. 从subversion开始(svn安装配置全过程(+全套安装文件与配置文件))…..

    从subversion开始(svn安装配置全过程(+全套安装文件与配置文件))-.. 博客分类: 工具使用 SVNsubversion配置管理Apache应用服务器  </div> 花了一 ...

  2. SVN安装配置及安全注意事项

    两个脚本: svn遍历脚本.zip wooyun上也是已经有非常多的svn泄露网站信息的事件,有的甚至由此导致整个服务器沦陷: WooYun: [盛大180天渗透纪实]第四章.SVN猎手 (某站SVN ...

  3. linux上配置subversion服务器端安装配置并使用svn,windows本地检出,设置同步更新服务器的钩子

    参考http://my.oschina.net/junn/blog/164041 http://songxj.blog.51cto.com/620981/396113 http://5iwww.blo ...

  4. Linux下SVN安装配置和使用中遇到的问题

    两个命令: svn info :显示版本库信息,svn的下载url等. svn co https://xxxxx/xxx   wodemulu   (通过我的目录制定co的文件夹) svn st:显示 ...

  5. CentOS6.5 yum安装 apache+svn安装配置

    首页是关于svn的备份和还原 比较快捷的方式: 备份:svnadmin hotcopy /opt/svn/svntest/ /var/tmp/svntest_20120604 --clean-logs ...

  6. SVN+FTP服务器搭建(一)——SVN安装配置篇

    Subversion是一个自由,开源的版本控制系统.在Subversion管理下,文件和目录可以超越时空.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它 ...

  7. Linux下SVN安装配置及应用

    一.安装篇 centos下yum安装 yum install subversion 查看安装是否成功: svnserve --version 二.配置篇 创建svn版本库目录 mkdir /home/ ...

  8. linux SVN 安装配置

    svn服务器有2种运行方式 1.独立服务器 (例如:svn://xxx.com/xxx):2.借助apache.(例如:http://svn.xxx.com/xxx):为了不依赖apache,选择第一 ...

  9. SVN安装配置和使用教程

    注意:location :为安装文件位置,Repositories:为管理的代码仓库的位置,若选中Use secure connection前面的Checkbox,则表示安全连接[https],这里的 ...

随机推荐

  1. POJ 3667 Hotel(线段树 区间合并)

    Hotel 转载自:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html [题目链接]Hotel [题目类型]线段树 ...

  2. 如何利用OEM工具(ORACLE ENTERPRISE MANAGER),增加表空间

  3. MyEclipse中折叠和展开所有代码

    我们有些时候一个文件中会后很多函数,需要对其进行折叠或展开. Ctrl+Shift+/可以快速折叠所有代码 Ctrl+Shift+*可以快速展开所有代码

  4. 《C#编程》

    第一天做C#,第一个C#.2016-11-11,周五 1.是用windowFormApp编程的代码. 2.下面是ConsoleApp编程的代码 例题1.主要是声明变量,1>使用变量,赋值语句 2 ...

  5. Python socket超时

    #server.py import socket s=socket.socket() s.bind(('127.0.0.1',2000)) s.listen(5) while 1: cs,addres ...

  6. [转]Android使用WebView从相册/拍照中添加图片

    原地址:http://blog.csdn.net/djcken/article/details/46379929 解决这个问题花了很长时间搜索了解,网上大部分使用openFileChooser但都没解 ...

  7. ImageJ 学习第一篇

    ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Image ...

  8. VS 远程调试之 “The visual studio remote debugger does not support this edition of windows”

    The error message "The visual studio remote debugger does not support this edition of windows&q ...

  9. Xcode 8 在XIB中布局View尺寸1000*1000

    Xcode 8 中XIB布局变动,在界面未展示之前,所有的View的布局都会给一个1000*1000的初始值,查看视图层级可以看到View拖得很长, 有时候我们在ViewDidLoad中布局的时候会使 ...

  10. 习课的redis配置记录

    <!-- redis begin --> <dependency> <groupId>redis.clients</groupId> <artif ...