一、SVN的概述;
概述:subversion(简称svn)是近几年崛起的版本管理软件,SVN=版本控制+备份服务器,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。SVN自由,开源的版本控制系统,核心数据仓库---Repository,工作空间---Workspace;
优势:
协作开发 ;
版本回退 ;
查看项目代码修改历史(领导可以掌控项目的开发进度);
二、SVN的工作流程;
访问方式:
1.独立服务器访问:svn://svn.test.com/test
2.借助Apache等http服务:http://svn.test.com/test
交互流程:
三、案例:搭建SVN版本控制器结合ssh实现访问权限控制;
案例环境:
系统类型 |
IP地址 |
主机名 |
所需软件 |
Centos 7.4 1708 64bit |
192.168.100.101 |
svn.linuxfan.cn |
subversion |
Centos 7.4 1708 64bit |
192.168.100.102 |
client.linuxfan.cn |
|
Win7-1 |
192.168.100.200 |
client |
tortoise |
SVN账户:
用户名 |
组 |
权限 |
zs |
linuxfan |
rwx |
ls |
||
ww |
|
r-x |
案例步骤:
[root@svn ~]# yum -y install subversion 下载svn
[root@svn ~]# tail -1 /etc/sysconfig/svnserve
OPTIONS="-r /var/svn"
[root@svn ~]# mkdir -p /var/svn/project 创建仓库
[root@svn ~]# svnadmin create /var/svn/project/ 创建项目
[root@svn ~]# ls /var/svn/project/
conf db format hooks locks README.txt
[root@svn ~]# systemctl start svnserve
[root@svn ~]# systemctl enable svnserve
Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.
[root@svn ~]# netstat -utpln |grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1136/svnserve
[root@svn ~]# useradd zs 创建3个用户
[root@svn ~]# useradd ls
[root@svn ~]# useradd ww
[root@svn ~]# echo 123123 |passwd --stdin zs
更改用户 zs 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@svn ~]# echo 123123 |passwd --stdin ls
更改用户 ls 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@svn ~]# echo 123123 |passwd --stdin ww
更改用户 ww 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@svn ~]# groupadd linuxfan 创建组
[root@svn ~]# gpasswd -M zs,ls linuxfan 将再zs,ls,放在linuxfan组中
[root@svn ~]# getfacl /var/svn/project/ 获取文件访问控制列表
getfacl: Removing leading '/' from absolute path names
# file: var/svn/project/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@svn ~]# setfacl -R -m g:linuxfan:rwx /var/svn/project/ 设置linuxfan组对/var/svn/project这个文件有最高权限
[root@svn ~]# setfacl -R -m u:ww:rx /var/svn/project/ ##最少需要拥有rx权限,否则将无法检出
[root@svn ~]# chown root:root /var/svn/project/
[root@svn ~]# chmod 770 /var/svn/project/
[root@svn ~]# getfacl /var/svn/project/
getfacl: Removing leading '/' from absolute path names
# file: var/svn/project/
# owner: root
# group: root
user::rwx
user:ww:r-x
group::r-x
group:linuxfan:rwx
mask::rwx
other::---
[root@svn ~]# svn mkdir file:///var/svn/project/trunk1 -m 'create' ##-m选项后参数随意
提交后的版本为 1。
[root@svn ~]# svn mkdir file:///var/svn/project/trunk2 -m 'create'
提交后的版本为 2。
[root@svn ~]# svn mkdir file:///var/svn/project/trunk3 -m 'create'
提交后的版本为 3。
[root@svn ~]# svn import /etc/init.d/ file:///var/svn/project/trunk4/ -m 'import'
正在增加 ...
...
提交后的版本为 4。
[root@svn ~]# svn list file:///var/svn/project/
trunk1/
trunk2/
trunk3/
trunk4/
[root@svn ~]# svn list file:///var/svn/project/trunk4
...所有子目录及文件
[root@svn ~]# svn checkout file:///var/svn/project/trunk4 /tmp/ ##检出svn中的文件
[root@svn ~]# ls /tmp/
authconfig ebtables-config iptables-config modules readonly-root selinux
cbq firewalld irqbalance netconsole rsyncd sshd
console grub kdump network rsyslog svnserve
cpupower init kernel network-scripts run-parts wpa_supplicant
crond ip6tables-config man-db rdisc saslauthd
[root@svn ~]# svn delete file:///var/svn/project/trunk4/ ##删除svn版本库中文件
[root@client ~]# yum -y install subversion
[root@client ~]# svn list svn+ssh://[email protected]/var/svn/project/
[email protected]'s password:
trunk1/
trunk2/
trunk3/
trunk4/
[root@client ~]# svn list svn+ssh://[email protected]/var/svn/project/trunk4/
[email protected]'s password:
authconfig
cbq/
console/
cpupower
crond
...