您的位置:首页 > 其它

最新Subversion服务器源码编译安装教程

2017-10-27 00:21 507 查看

什么是 Subversion?

Subversion 是一个 免费/开源 的 版本控制系统 (version control system, VCS), 也就是说, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. 由于这个特点, 很多人把版本控制系统 看成是一种 “数据时间机器”.

Subversion 可以跨越网络进行操作, 这就允许多个用户在不同的机器上工作. 从某种程度上讲, 允许用户在各自的空间里修改和管理同一组数据可以促进团队 协作, 因为修改不再是单线进行, 开发速度会更快. 由于所有的工作都被记录在 案, 也就不用担心并行开发会降低软件的质量—如果出现不正确的修改, 只 要撤消那一次更改操作即可.

某些版本控制系统同时也是 软件配置管理 (software configuration management, SCM) 系统. 这种系统经过精巧的设计, 专门用于管理源代码树, 具备许多与软件开发有关的 特性—理解编程语言, 提供了程序构建工具. 但 Subversion 不是 SCM, 它是一个通用系统, 可以管理 任意 类型的文件集合. 对你来说, 这些文件可能是源代码文件—对别人来说, 可能是一个货物清单 或数字电影.


Subversion的运行和数据存储

SVN(subversion)的运行方式有两种:

一种是基于Apache的http、https网页访问形式;

还有一种是基于svnserve的独立服务器模式。

SVN的数据存储方式也有两种

Berkeley DB数据库中存储数据;

使用普通的文件FSFS存储数据。

由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全。

Subversion的架构



图中的一端是存放所有版本数据的 Subversion 仓库, 另一端是 Subversion 客户端程序, 客户端程序管理着部分版本数据在本地的映射. 两端之间是穿过仓库访问 (Repository Access) 层的多条访问路径, 其中 一些路径跨越计算机网络, 通过网络服务器对仓库进行访问, 其他一些路径 则不经过网络, 直接访问仓库.


Subversion 的组件

安装好的 Subversion 由好几个组件构成, 下面将简单地介绍 一下这些组件:

svn
客户端命令行工具

svnversion
用于报告工作副本状态 (就项目的版本号而言) 的工具

svnlook
可以直接检查仓库的工具

svnadmin
用于创建, 调整或修复 Subversion 仓库的工具

mod_dav_svn
Apache HTTP 服务器插件, 该插件允许用户通过网络访问仓库

svnserve
一个定制的, 可独立运行的服务器程序, 可以以守护进程方式运行, 也可以被 SSH 调用, 这是另一种允许用户通过网络访问仓库的方法

svndumpfilter
过滤 Subversion 仓库转储数据流的程序

svnsync
可以跨越网络对仓库进行增量镜像备份的程序

svnrdump
可以跨越网络对仓库历史进行转储和加载的程序

svnmucc
该工具支持在没有工作副本的情况下, 在一个单独的提交中对多个 仓库执行基于 URL 的操作


本文将以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器

系统环境:

rhel7.2 x86_64bit
SELinux关闭
防火墙关闭(或者开启防火墙端口,基于svnserve的独立服务器模式,默认端口为3690)


开启防火墙端口的命令如下:

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




安装之前请首先清理旧的软件环境

yum remove -y subversion subversion-libs


一、安装

注意:所有软件本人下的版本都比较高

1.安装APR(必须安装,本人亲测,否则./configure不过)

下载地址 https://dist.apache.org/repos/dist/release/apr/apr-1.6.3.tar.gz

# tar zxvf apr-1.6.3.tar.gz
# cd  apr-1.6.3/
# ./configure --prefix=/usr/local/apr
# make && make install


2.安装APRUTIL(必须)

下载地址 https://dist.apache.org/repos/dist/release/apr/apr-util-1.6.1.tar.gz

# tar -zxvf apr-util-1.6.1.tar.gz
# cd  apr-util-1.6.1/
# ./configure --with-apr=/usr/local/apr/bin/apr-1-config
# make && make install


如果make && make install 出现如下错误:

xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
#include <expat.h>
^
compilation terminated.
make[1]: *** [xml/apr_xml.lo] Error 1
make[1]: Leaving directory `/root/apr-util-1.6.1'
make: *** [all-recursive] Error 1


解决方法:

yum install expat-devel -y


3. 下载sqlite-amalgamation(必须)

http://www.sqlite.org/2017/sqlite-amalgamation-3210000.zip

需要将此文件解压到你当前subversion编译安装所处目录的sqlite-amalgamation(自己新建)目录中,如本人为:

[root@lockey6 sqlite-amalgamation]# ls
shell.c  sqlite3.c  sqlite3ext.h  sqlite3.h
[root@lockey6 sqlite-amalgamation]# pwd
/root/subversion-1.9.7/sqlite-amalgamation


如果这一项不正确会提示如下错误,可以根据提示的路径进行解压:



其他依赖都可以直接通过yum 源来进行安装如:

提示需要zlib的时候执行以下安装:

yum install zlib-devel -y


4. 安装Subversion

下载地址:http://mirror.bit.edu.cn/apache/subversion/subversion-1.9.7.tar.gz



# tar -zxvf subversion-1.9.7.tar.gz
# cd  subversion-1.9.7
# ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config
# make && make install


加入环境变量

vim /etc/profile

export PATH=$PATH:/usr/local/svn/bin


source /etc/profile#使配置立刻生效

whereis libexpat.so.1 #查找文件安装目录,如下:



vi /etc/ld.so.conf #编辑加入libexpat.so.1的目录

/usr/lib64/


ldconfig #使配置生效

测试是否安装成功



[root@lockey6 bin]# svn --version
svn, version 1.9.7 (r1800392)
compiled Oct 26 2017, 22:18:27 on x86_64-unknown-linux-gnu


二、 使用

1、创建svn代码库

mkdir -p /home/svn #创建代码目录

svnadmin create /home/svn #创建svn代码库


上面的命令执行完成之后,会自动建立svn库,在/home/svn文件夹含了conf,db,format,hooks,locks,README.txt等文件。



说明svn代码库创建成功。

2、配置svn代码库

cd /home/svn/conf #进入配置文件存放目录

vim /home/svn/conf/svnserve.conf #配置全局文件

[general]

anon-access=none #禁止匿名访问,设置为none。默认为read,参数:read,write,none

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

password-db=passwd #用户账号密码文件路径,可以写绝对路径

authz-db=authz #访问控制权限文件路径,可以写绝对路径

realm = test repo#每个SVN项目的认证命,会在认证提示里显示,建议写项目名称。


vim /home/svn/conf/passwd #配置用户密码

[users]
root=redhat
lockey=lockey23


vim /home/svn/conf/authz #配置权限控制文件,设置用户可以访问的目录

[groups]

admin = root
users = root,lockey

[/]

@admin = rw

@lockey = rw

#[/]代表根目录下所有的资源




3.设置svn服务开机启动

vim /etc/init.d/svn

#!/bin/sh

# processname: svn

svn_port=3690

svn_home=/home/svn

if [ ! -f "/usr/local/svn/bin/svnserve" ]

then

echo "svnserver startup: cannot start"

exit

fi

case "$1" in

start)

echo "Starting svnserve..."

/usr/local/svn/bin/svnserve -d -r $svn_home --listen-port $svn_port

echo "Successfully!"

;;

stop)

echo "Stoping svnserve..."

killall svnserve

echo "Successfully!"

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usage: svn { start | stop | restart } "

exit 1

esac


chmod +x /etc/init.d/svn #添加执行权限

chkconfig svn on #开启自启动


使用以下命令关闭svn然后照下图进行启动

killall svnserve #关闭svn服务


测试svn可用性

[root@lockey6 ~]# svn checkout svn://192.168.1.102 --username=lockey --password=lockey23


会发现当前目录下生成了.svn 隐藏目录



向版本库中提交添加的文件

[root@lockey6 svntest2]# svn checkout svn://192.168.1.102/ --username=lockey --password=lockey23
A    halo
Checked out revision 1.
[root@lockey6 svntest2]# ls
halo
[root@lockey6 svntest2]# cat halo
goood
[root@lockey6 svntest2]# echo 'goooooooooood' > good
[root@lockey6 svntest2]# svn add good
A         good
[root@lockey6 svntest2]# svn commit -m 'add a file named good' good




在其他目录中进行测试,发现文件已经到了版本库中



在window中通过客户端进行测试

下载地址https://tortoisesvn.net/downloads.html



安装过程就不说了吧,window下软件都不会安装那就没救了

安装完成后在桌面-右键单击,选择TortoiseSVN-版本库浏览器

依次输入信息





可以看到svn服务器上的内容,右键单击之后,可以选择创建文件夹等操作。

选择checkout就可以把代码库导到本地,然后就可以进行协同开发了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: