在Linux操作系统下安装版本控制工具SVN服务器,SVN默认端口为3690,记得在防火墙中放行此端口,如果使用阿里云的,要在阿里云后台的安全策略中写入此端口的规则。
一、SVN安装步骤
0.验证是否有svnserver (svnserve –version)
1.安装svnserver (yum install -y subversion)
2.验证是否安装成功 (svnserve –version)
3.进入到svn的资源目录 (cd /home/svndata)
4.创建svn资源库 (svnadmin create myProject)
5.新增用户
6.配置用户权限
7.配置资源库权限
8.启动或者重启
9.测试
二、SVN安装与配置图文说明(单版本库)
0.验证是否安装,图下是未安装的
安装过的如下图
1.安装
2.重新验证
3.进入到svn的资源目录 (cd /home/svndata),创建svn资源库 (svnadmin create myProject)
4.进入到资源中
conf 配置文件所在的目录
5.进入到配置文件夹中
authz 是权限相关的配置
passwd 是帐号相关的配置
svnserve.conf 是资源库相关的配置
6.新增用户
编辑passwd文件,在users下添加用户,格式为 用户名 = 密码
7.配置用户权限
编辑authz文件,在[/] 下添加权限, 格式为 用户名=权限 (rw) 为读写权限
8.配置资源库权限
编辑svnserver.conf文件,如下
9.启动或者重启
如果是第一次启动 直接执行命令 svnserver -d -r 目录(可以是绝对路径)
如果是重启 首先执行kill
10.测试
上传一个文件测试
结果如下:
到此一个svn server已经搭建好了
l 备注
1)、如果出现无法连接服务器的提示,请确保远程svn服务器的3690端口可以访问
0 1 |
# firewall-cmd --zone=public --add-port=3690/tcp --permanent # systemctl restart firewalld |
修改svnserve配置并设置开机启动
0 |
# vim /etc/sysconfig/svnserve |
将 /var/svn改成自己的代码库的目录(如果是多库,则使用总目录)
设置开机自启
0 1 |
# systemctl enable svnserve.service Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service. |
三、svn多版本库配置方法
1、在指定目录建立仓库总目录,目录位置没有严格要求。
0 |
# mkdir -p /home/svndata |
2、在总目录下建立N个版本库。
0 1 2 3 |
# cd /home/svndata # svnadmin create ./warehouse1 # svnadmin create ./warehouse2 ...... |
3、进入warehouse1 目录下的conf文件夹。将其中的authz与passwd文件复制到svnrepos目录下
0 1 2 |
# cd ./warehouse1/conf # cp authz ../../ # cp passwd ../../ |
4、修改warehouse1/conf下的svnserve.conf文件,将其中的passwd文件制定与authz文件制定进行修改,其他配置按正常单svn配置。(warehouse2同样设置一遍)
5、修改复制出来的/svnrepos目录下的passwd文件与authz文件
authz文件:设置用户组和用户名
passwd文件:设置用户密码
6、启动SVN,如果之前有启动,那就kill掉所有svnserve进程后再启动SVN
0 |
# svnserve -d -r /home/svndata |
或者启用监听SVN Server非默认端口(默认端口是3690)
0 |
# svnserve -d -r /home/svndata --listen-port 1234 |
7、仓库1的检出地址为:svn://ip地址/warehouse1
仓库2的检出地址为:svn://ip地址/warehouse2
如果使用了非默认端口,则访问地址为:
svn://ip地址:1234/warehouse1
svn://ip地址:1234/warehouse2
四、svn的使用
1,启动SVN 版本库
0 |
# svnserve -d -r /home/svn |
其中 -d 表示守护进程, -r 表示在后台执行
/home/svndata 是svn版本库的根目录(此说明是针对多个版本库的)
2,关闭SVN
这里采取linux杀死进程的方式处理的
0 1 |
# ps -ef|grep svnserve root 4967 1 0 Aug23 ? 00:00:00 svnserve -d -r repository/ |
这里 kill -9 4967杀死进程, 此4967为进程号
3,创建两个源码目录(开发的源码和发布的源码),可以导入同一个源
0 1 |
# mkdir -p /www/web/projec1/xxx_dev 保存开发源码 # mkdir -p /www/web/projec1/xxx_pub 保存发布源码 |
4,导入项目源代码 # svn import [源路径][目标版本库路径] -m [日志信息]
//例如:
ps:源代码要是别的项目拷贝过来的,请删除原来的.svn文件,不然你会悲剧的
0 |
# svn import /home/www/projec1/xxx_dev file:///data/svn/xxx_server/xxx_dev -m "Initial import" |
5,复制钩子文件模板(版本库/hooks)
0 |
# cp -f post-commit.tmpl post-commit |
6,编辑 post-commit 钩子文件
0 |
# vim post-commit |
7,删掉除了第一行 #!/bin/sh
之后的所有文件 然后输入
0 1 2 3 4 5 6 7 8 9 10 |
#!/bin/sh # 防止有中文文件名时造成svn提交出错 export LC_CTYPE=en_US.UTF-8 # svn命令路径 update --username 您的用户名 --password 您的密码 您的服务器代码项目目录 svn update --username wenpeng --password wp113000 /home/www/projec1/xxx_dev # 修改为原来的用户和用户组,防止提交后的文件权限是root用户和用户组的 # chown [用户名]:[组群名] -R chown www:www -R |
8,重要一步,修改post-commit文件的权限
0 |
# chmod +x post-commit |
9,检出版本库中代码到网站根目录
0 |
# svn co svn://192.168.100.213/pro2/ /home/www/projec1/xxx_dev |
附:错误提示
1、启动svnserve时,出现错误提示:
svnserve: E000098: Can’t bind server socket: Address already in use
svnserve:E000098:不能绑定服务器套接字:已经在使用的地址
解决办法:
停止所有svnserve服务,
命令:killall svnserve
之后再重启svnserve,
命令:svnserve -d -r /home/svndata/
.