概述
什么是 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就可以把代码库导到本地,然后就可以进行协同开发了:
最后
以上就是背后棉花糖为你收集整理的最新Subversion服务器源码编译安装教程的全部内容,希望文章能够帮你解决最新Subversion服务器源码编译安装教程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复