目录
一、安装subversion
(1) subversion安装,输入命令:
cd /bin
sudo yum install subversion
(2)subversion安装成功,查看安装在/usr/bin目录里,输入命令:
which svnserve
(3)检查一下subversion是否安装成功,输入命令:
二、建立版本库
subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置。
(1)查看svnserve文件所在路径,输入命令:
systemctl cat svnserve.service
(2)查看当前subversion的数据根目录路径,输入命令:
cat /etc/sysconfig/svnserve
(3)我们修改/etc/sysconfig/svnserver将默认目录指定到/opt/svn:
①修改当前subversion的数据根目录路径到/opt/svn,输入命令:
cat /etc/sysconfig/svnserve
vi /etc/sysconfig/svnserve
②使用svnadmin建立版本库CarManagement,输入命令:
sudo mkdir -p /opt/svn
sudo svnadmin create /opt/svn/CarManagement
③查看创建版本库明细,输入命令:
ll /opt/svn/
ll /opt/svn/CarManagement/
三、配置
(1)编辑用户文件passwd,新增两个用户:admin和shang,输入命令:
cat /opt/svn/CarManagement/conf/passwd
vi /opt/svn/CarManagement/conf/passwd
(2)编辑权限文件authz,用户admin设置可读写权限,shang设置只读权限,输入命令:
cat /opt/svn/CarManagement/conf/authz
vi /opt/svn/CarManagement/conf/authz
要设置权限组,添加以下内容:
【develop、admin:自己命名权限组名字即可】
【如果1个权限组里,有多个用户,则用户与用户之间用英文逗号隔开,比如:develop = shang,admin】
# 研发人员/测试人员账号权限组
develop = shang
# 管理员账号权限组
admin = admin
[\]
@develop = r
@admin = rw
不设置权限组,添加以下内容:
【只需在末尾添加,无需在文件其他部分修改和添加任何东西】
【rw表示赋予此账号可读写的权限,请注意[]中的斜杠,一定是反斜杠,有些教程说,需添加版本库名称在括号内,我直接建议就这样写,这样写允许访问的权限更大,避免一些错误】
[\]
账号1 = rw
账号2 = rw
......
(3)编辑svnserve.conf,输入命令:
cat /opt/svn/CarManagement/conf/svnserve.conf
vi /opt/svn/CarManagement/conf/svnserve.conf
[general]添加的内容【每行代码前面一定不要有空格,每行全部顶置】:
anon-access = read #控制非鉴权用户访问版本库的权限
auth-access = write #控制鉴权用户访问版本库的权限
password-db = passwd #指定用户名口令文件名
authz-db = authz #指定权限配置文件名
realm = 服务器ip地址 #指定版本库的认证域,即在登录时提示的认证域名称
四、SVN服务
(1)启动SVN服务,输入命令:
sudo systemctl start svnserve.service
或者:
svnserve -d -r /opt/svn
(2)检查服务是否启动成功,输入命令:
ps aux | grep svn
(3)通过netstat可以看到SVN打开了2606端口,输入命令:
sudo netstat -tnlp
(4)设置成开机启动,输入命令:
sudo systemctl enable svnserve.service
五、 创建 svn 版本文件
(1)输入命令,进入版本库:
svn checkout file:///opt/svn/CarManagement ./
(2)输入指令查询是否成功创建 svn 版本文件:
ls -a
如果出现 . .. .svn 的话,就说明创建成功 :
六、添加目录文件到版本库
svn add *
svn commit -m "[随便你写什么日志]"
比如:svn commit -m "mulu.log"
七、设置服务器自动提交文件
(1)修改 hooks 文件 post-commit(设置了服务器自动更新提交的文件,告别 svn up 手动指令更新):
cd /opt/svn/CarManagement/hooks
cp post-commit.tmpl post-commit
chmod 755 post-commit
vi post-commit
(2)在最后加上 (/data/wwwroot 以你版本库根目录路径为准):
#!/bin/sh
export LANG=en_US.UTF-8
/usr/bin/svn up /data/wwwroot --username hahaha --password hahaha --no-auth-cache --non-interactive
比如:
#!/bin/sh
export LANG=en_US.UTF-8
/usr/bin/svn up /opt/svn/CarManagement/data/wwwroot --username admin --password admin --no-auth-cache --non-interactive
八、客户端测试
客户端可以通过TortoriseSVN测试。
(1)确认本地已安装SVN客户端,未安装的,可以点击查看我的另一博文进行安装:
(2)本地创建SVN导出库CarManagement:
(3)输入服务器SVN库地址,选择要导入的目标文件夹:
svn://服务器ip:端口/库名称
例如:svn://192.168.206.141:3690/CarManagement
(4)这时候可能会防火墙问题,出现失败情况;如果是防火墙问题,会提示无法连接:
解决方法:
①用systemctl检查服务器的防火墙配置,可以看到,没有telnet服务和2606端口:
firewall-cmd --list-all
②增加telnet服务器和 2606 和 3690 (默认的)端口:
sudo firewall-cmd --permanent --add-service=telnet
sudo firewall-cmd --permanent --add-port=2606/tcp
firewall-cmd --zone=public --add-port=3690/tcp --permanent
sudo firewall-cmd --reload
③用systemctl检查服务器的防火墙配置,可以看到,已经有了telnet服务和2606端口:
firewall-cmd --list-all
④关闭防火墙:
systemctl stop firewalld.service
⑤开启防火墙:
systemctl start firewalld.service