Subversion安装使用指南

在之前我们见到过jenkins,不过jenkins只是一个自动化部署的持续集成工具还是需要有一些软件提供支持才行。比如:git maven subversion等代码仓库软件否则还需要jenkins干什么呢?这一篇博客提供如何安装Subversion以及部署。

Subversion是什么?

第一步可以想象为一个文件的共享目录,可以给代码提供一个共享目录的空间,并且可以添加账户、分组、制作权限等功能。但是说它是一个共享目录的应用也不确切,如果单纯共享目录还不如用samba的好。subversion还有一个确切的功能就是有一个版本库,这个与普通的文件共享存储大不一样它会记录每个文件的改变、目录树的改变,例如:文件和目录的添加、删除和重新组织都会进行记录。这样大大方便了程序员能够在任何时候查询以前提交的代码数据与现在代码数据进行比对。

所以这个应用在大多数公司中非常重要,使用subversion作为代码管理库的程序员还是挺多的(虽然现在有git这么一个神器)。作为运维人员来说部署subversion给java程序员使用也是必备项目,接下来来看看如何安装subversion并且简单使用与管理。

关于安装subversion:

安装方式还是有两种,不过我的建议是使用yum | apt-get等包管理器进行安装,这样比较方便但是版本方面应该是在1.7。不过想要新版本的话建议在apache官网上下载源码包进行编译安装。关于使用包管理器安装的方式本博客就不说了,请自行安装,下面是编译安装的方法:

首先我们先去apache官网中的subversion项目里面进行下载,我这边下载的是1.9.6版本进行安装。下载网址在:https://subversion.apache.org/download.cgi 选择版本后使用wget 工具进行下载:

wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.9.6.tar.gz

首先在安装之前我们得安装一下依赖包,依赖包有:apr apr-util zlib gcc openssl-devel sqlite-devel 其中sqlite在操作系统安装完毕以后就有的所以无需安装!其中apr和apr-util需要在apache官网下载源码进行编译安装。yum安装的版本很低即使安装了也会报错!关于apr库列表都在https://apr.apache.org/download.cgi 进行下载。

#首先安装yum的依赖包:
yum install -y zlib gcc openssl-devel sqlite-devel
#下载apr的依赖源码包
wget http://apache.fayea.com//apr/apr-1.6.2.tar.gz
wget http://apache.fayea.com//apr/apr-util-1.6.0.tar.gz
#安装apr:
tar -xf apr-1.6.2.tar.gz
cd apr-1.6.2
./configure --prefix=/usr/local/apr
make && make install
#安装apr-util
tar -xf apr-util-1.6.0.tar.gz
cd apr-util-1.6.0
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
#这边出现了一个报错信息:
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
 #include <expat.h> 缺少了expat库,直接使用yum install expat-devel即可
yum install expat-devel
make clean #清理编译生成的文件
make && make install #重新编译
#接下来就是安装subversion了,首先进入目录:
cd subversion-1.9.6
./configure --prefix=/usr/local/subversion-1.9.6\
--with-apr=/usr/local/apr\
--with-apr-util=/usr/local/apr-util
make && make install
cd /usr/local
ln -s subversion-1.9.6/ subversion
#给subversion添加环境变量:
vim /etc/profile.d/subversion.sh
export PATH=/usr/local/subversion/bin:$PATH
source /etc/profile.d/subversion.sh

到此为止subversion就算已经安装完毕了,使用svn命令即可当作客户端进行使用!接下所要展示的是如何为subverision创建一个仓库作为服务器端使用,并且除此之外展示一下如何使用配置文件制定策略。

为subversion添加一个仓库并启动subversion服务!
#创建一个目录为subversion的仓库
mkdir /opt/testdata
svnadmin create /opt/testdata
#随后可以去/opt/testdata目录看看生成了那些文件
drwxr-xr-x 2 root root 72 Aug 4 17:16 conf
drwxr-sr-x 6 root root 4096 Aug 4 17:16 db
-r--r--r-- 1 root root 2 Aug 4 17:16 format
drwxr-xr-x 2 root root 4096 Aug 4 17:16 hooks
drwxr-xr-x 2 root root 39 Aug 4 17:16 locks
-rw-r--r-- 1 root root 246 Aug 4 17:16 README.txt

随后我们在conf目录中添加用户、组、设置密码、权限更改默认配置然后启动subversion

#首先配置subversion服务的配置文件
vim svnserve.conf
anon-access = none #默认为read,表示非授权用户有说明权限,最好改为none
auth-access = write #授权用户的权限,这个必须是write否则别人这么提交代码?
password-db = passwd #用户密码的配置文件位置,这里直接用默认在conf下的passwd
authz-db = authz #权限管理的配置文件,这里直接用默认在conf下的passwd
realm = /opt/testdata/tmp #专门存储身份认证,作为缓存使用。这里填写缓存路径
#现在进入passwd文件添加两个用户作为测试:
vim passwd
[users] #默认有举例,按照这个格式添加用户
# harry = harryssecret
# sally = sallyssecret
jerry = hello
tom = hello
#最后我们来设置权限,文件是authz
vim authz
[groups]
#首先添加一个组将刚刚的tom jerry加入testgroup组
testgroup = tom,jerry
#随后我们在根目录做一个权限,将testgroup组的成员权限调整为读写。其他人均可读
[/]
@testgroup = rw
* = r
#如何需要添加用户直接写入用户 = 权限即可比如:
tom = rw

初步的权限已经调整完毕了,不过要注意的是:所有的配置文件必须顶格编写如果前面含有空格会报错。接下来我们启动服务并且使用svn客户端进行连接查看!

svnserve -d -r /opt/testdata/ 
#启动服务命令-d表示运行在后台也可使用--listen-port 来选择监听端口
#关闭服务可以使用ps -aux | grep "svn"随后kill进程即可!
ps -aux | grep "svn"
root 31089 0.0 0.1 148888 1104 ? Ss 18:08 0:00 svnserve -d -r /opt/testdata/
kill -9 31089 #直接将进程ID kill即可关闭。

如果想要持久化功能的话,可以使用脚本,不过我的建议就是还是将启动服务命令卸载rc.local里面开机启动即可!谁会没事使用脚本将subversion重启呢?

使用客户端连接subversion服务器端:

一般程序员都是使用windows来连接subversion服务器端,不过在windows是没有svn客户端。需要进行下载一个开源软件进行安装才能使用这个软件名称为:TortoiseSVN 点进去之后找到下载页面进行下载安装即可,安装这个客户端的步骤我就无需贴在本博客中了。

安装完毕以后需要在windows中创建一个文件夹,随后选择右键选择svn检出:

填写好svn地址(下面的图片只是举例说明)使用svn://表示(如果你的svn含有httpd作为代理可以在web上进行上传代码的话就无需这个客户端了…),这边的检出深度根据情况进行定义,如果是刚安装完毕的subversion服务器端选择全递归:

输入用户密码即可完成,保存认证选项可选可不选。

刷新一下你会看到你的文件夹已经有了绿色的勾说明完成了同步:

接下来我们在这个文件夹中创建一个project文件夹进行上传,为根目录创建一个新的项目,首选创建一个文件夹写好名字为project并且右键选择svn提交:

随后将project文件夹勾选并确定那就算在根目录中创建了一个project的分支:

接下来我打算在/project里面提交一个hello_world的代码进去,保存好文件之后还是一样右键不过这回选择添加:

此时你会发现你的project文件夹已经变成了红色感叹号的标志,这表示你更新的文件内容但是未进行提交。建议抓紧时间提交如果遇到两个人同时修改文件,但是你的队友比你提交的早那么会出现无法提交的状态需要你先更新svn后在你队友的基础上进行修改后提交。

接下来我就不截图了,对着hello_world文件邮件选择提交,然后确定就算提交完成了,一个简单的subversion服务器端的基本操作就算讲完了。

结语:

上文只是一个刚开始创建subversion的案例,其中分支中还能再创建分支。根据自己的实际情况对权限要有所调整(不可能以后在根目录中还是一样所有都可以读取吧?)比如java 前端 安卓 IOS的目录分支肯定是不同的,要给他们添加组并且及时做好权限。每个项目的权限管理人也得做好,好再对conf目录下的passwd authz等进行修改后是无需重启subversion的所以尽管去修改吧!

Comments

Leave a Reply

Your email address will not be published. Name and email are required