1.Centos6.8下搭建SVN服务器
Subversion是一个自由,开源的版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很
像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢
复到以前的版本,并可以查看数据的更改细节。Subversion是Apache基金会下的一个项目,官网
https://subversion.apache.org/ 。
2.安装
yum -y install subversion
3.创建SVN版本库
mkdir -p /opt/svn/repos/svn1 ##创建目录
svnadmin create /opt/svn/repos/svn1 ##创建SVN版本库
4.配置版本库
① cd /opt/svn/repos/svn1/conf 并且 vim passwd(添加用户):
[users]
# harry = harryssecret
# sally = sallyssecret
#
root = 123456
user2 = 12345
② vim authz(添加权限):
[svn1:/]
user1 = rw
user2 = rw
#svn1是具体版本库的标签
③ vim svnserve.conf(取消一些注释):
[general]
anon-access = none #非授权用户无法访问
auth-access = write #授权用户有写权限
password-db = passwd #密码数据所在目录
authz-db = authz
5.启动SVN
svnserve -d -r /opt/svn/repos/ #注意目录,不包含svn1
ps aux | grep svnserve #查看服务是否启动
6.测试SVN的服务器
svn co svn://192.168.1.111/svn1
7.如果想创建多个版本库
mkdir -p /opt/svn/repos/svn2 ##创建目录
svnadmin create /opt/svn/repos/svn2
重复步骤4的配置方法
killall svnserve #关闭svn服务
svnserve -d -r /opt/svn/repos/ #启动svn,注意目录,不包含svn2
8.删除版本库
rm -rf svn2/
9.同个svn库下根据不同的权限访问不同的目录
[groups]
chanpin = user1,user2
yanfa = user3,user4
[svn1:/]
test = rw
other = rw
anyone = rw
@chanpin = rw
@yanfa = rw
[svn1:/chanpin]
other = rw
@chanpin = rw
* =
[svn1:/yanfa]
anyone = rw
@yanfa = rw
* =
10.常见问题
① 不能连接到仓库 unable to connect to a repository url
原因:svn服务没有启动
解决方法: svnservice -d -r /opt/svn/repos /opt/svn/repos是仓库地址。
② checkout时提示svnserver.conf错误
问题描述:svnserve.conf:19: Option expected
原因:svnserve.conf中有空格出现
解决方法:在anon-access或者auth-access前不能存在空格,这个空格隐藏了一个#号。所以会报错。
③ 仓库不存在
问题描述:URL svn://123.57.204.117/Android doesn’t exist
原因:因为启动svn服务的时候,仓库路径写错了。楼主碰到这个问题是因为我的仓库地址
是/opt/svn/repos/myproject,启动服务时输入的地址是/opt/svn/repos/myproject。
解决方法:启动服务时,要输入仓库的上一级目录。比如楼主的正确启动地址应该是/opt/svn/repos。
④ Authorization failed
一般是conf/authz配置出错
或者是svnserve.conf有些选项没有打开。
11.查看svn进程
① 命令:ps aux | grep svn
root 1407 0.0 0.0 160548 1056 ? Ss 23:21 0:00 svnserve -d -r
/opt/svn/repos/svn1/
root 1411 0.0 0.0 103244 872 pts/0 S+ 23:27 0:00 grep svn
② 使用Kill命令杀死进程
kill -s 9 64434 (注释:64434为进程ID)
③ 检查svn是否安装成功
svnserve --version
④ 卸载svn
yum remove subversion
12.默认开机自启动svn
首先:编写一个启动脚本svn_startup.sh,我放在/root/svn_startup.sh
#!/bin/bash
/usr/bin/svnserve -d -r /home/svn/
这里的svnserve路径保险起见,最好写绝对路径,因为启动的时候,环境变量也许没加载。
绝对路径怎么查?
which svnserve
这里还有可能碰到一个问题,如果你在windows下建立和编写的脚本,拿到linux下,用vi或者vim修改后可能会无法执行,这是文件格式的问题
vi svn_startup.sh
输入:set ff 回车
如果显示的结果不是fileformat=unix
再次输入
set ff=unix
就OK了
然后修改该脚本的执行权限
chmod ug+x svn_startup.sh
或者万能的
chmod 777 svn_startup.sh
最后:加入自动运行
vi /etc/rc.d/rc.local
在末尾添加脚本的路径,如:
/root/svn_startup.sh
现在,你可以重启一下试试了。 不懂得怎么确认成功?败给你了
ps -ef|grep svnserve