Subversion(简称SVN)是一个开源的版本控制系统,管理随时间改变的数据,SVN服务支持svnserve和http访问模式。
SVN简介
SVN管理的数据存放在中央资料档案库(Repository)中。该档案库会记录文件的每一次变动,这样您就可以把数据恢复至旧版本或浏览文件的变动历史。SVN中常用的概念和操作如下:
- Repository(源代码库):源代码统一存放的地方。
- Checkout(提取):该操作用于从Repository中提取一份源代码到本地。
- Commit(提交):该操作用于将修改代码后的代码提交到Repository。
- Update(更新):该操作用于同步本地源代码与Repository中的源代码。
- Checkout(您提取源代码到本地)
- 其他人修改并提交源代码到Repository
- Update(您获得最新的代码)
- 您修改并调试成功源代码。
- Commit(提交修改后的代码到Repository,其他程序员即可看到您的修改)。
- 若修改的代码在不同行,SVN会自动合并两种修改。
- 若修改的代码在同一行,SVN会提示文件冲突(Conflict),需要手动确认。
安装部署
一:安装SVN
1、运行命令安装SVN,查看SVN版本:
yum install subversion svnserve --version
二:创建SVN版本库
1、运行以下命令创建版本库根目录。
mkdir /var/svn
2、依次运行以下命令创建版本库,查看自动生成的版本库文件
cd /var/svn svnadmin create /var/svn/svnrepos cd svnrepos ls
注:Subversion目录说明
三、配置SVN
1、设置账号和密码:
运行命令:cd conf/ 编辑文件:vi passwd
移动光标至[users]块中,添加用户账号和密码。
注:添加账号和密码的格式为:账号 = 密码。例如,admin(账号) = 123456(密码),如下图所示(注意等号两端要有一个空格)。
按Esc键退出编辑模式,并输入:wq保存并退出。
2、为账号设置读写权限:
运行vi authz
命令,打开权限控制文件。
按i
键进入编辑模式。
移动光标至文件末尾,并添加如下代码(admin表示账号,r表示读权限,w表示写权限):
[/]
admin=rw
按Esc
键退出编辑模式,并输入:wq
保存并退出。
3、修改SVN服务配置:
运行vi svnserve.conf
打开SVN服务配置文件。
按i
键进入编辑模式。
移动光标找到如下配置行,删除行前面的注释符#和空格:
anon-access = read #匿名用户可读,您也可以设置 anon-access = none,不允许匿名用户访问。设置为 none,可以使日志日期正常显示 auth-access = write #授权用户可写 password-db = passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = /var/svn/svnrepos #认证空间名,版本库所在目录
注:每行不能以空格开始,且等号两端要有一个空格。
按Esc
键退出编辑模式,并输入:wq
保存并退出。
4、启动SVN版本库:
运行命令:svnserve -d -r /var/svn/ # 启动svn 运行命令:ps -ef |grep svn # 查看SVN服务是否开启
如果返回结果如下图所示,表示SVN服务已经开启。
killall svnserve
命令可停止SVN服务。5、防火墙设置
开放防火墙端口,执行命令vi /etc/sysconfig/iptables,添加以下内容:
-A INPUT -p tcp -m state --state NEW -m tcp --Dport 3690 -j ACCEPT
保存并退出,执行service iptables restart重启防火墙。
注:重启防火墙失败:
解决办法:可尝试关闭firewalld服务在重启iptables
service iptables save systemctl stop firewalld -- 关闭firewalld服务 systemctl disable firewalld --设置开机禁用firewalld systemctl start iptables -- 启动iptables systemctl status iptables --确认iptables状态 systemctl enable iptables -- 设置iptables开机启动 systemctl status firewalld --确认firewalld服务
6、阿里云添加安全组规则
SVN服务的默认端口为TCP 3690。您需要登录阿里云ECS管理控制台,添加安全组规则放行TCP 3690端口。
四:svn客户端连接
1、在本机下载并安装TortoiseSVN客户端
2、右键单击本地项目文件夹,在弹出菜单中,选择SVN检出,填写如下信息后,单击确定。
指定资源库URL,格式为svn://实例公网IP地址/SVN仓库名
。本示例中,SVN仓库名为svnrepos。
如果出现下图所示信息,表示检出成功。
# Generated by iptables-save v1.4.21 on Tue Jul 2 17:03:06 2019 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [5:5594] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8088 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --Dport 3690 -j ACCEP -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Tue Jul 2 17:03:06 2019
2、如果本地连接失败,报错“No repository found in 'svn://47.1XX.XXX.XX”
执行命令: svnserve -d -r /var/svn/svnrepos 如果提示错误:
则执行:
killall svnserve # 杀死所有svn进程
sudo svnserve -d -r /var/svn/svnrepos # 获取权限执行svnserve -d -r /仓库地址(安装的路径)