基于SSH的SVN搭建

一、SVN的概述;

概述:subversion(简称svn)是近几年崛起的版本管理软件,SVN=版本控制+备份服务器,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。SVN*,开源的版本控制系统,核心数据仓库---Repository,工作空间---Workspace;

优势: 
  协作开发 ;
  版本回退 ;
  查看项目代码修改历史(领导可以掌控项目的开发进度);

 

二、SVN的工作流程;

访问方式:

1.独立服务器访问:svn://svn.test.com/test

2.借助Apache等http服务:http://svn.test.com/test

交互流程:

 

基于SSH的SVN搭建

 

基于SSH的SVN搭建

 

三、案例:搭建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

 

案例步骤:

  • 安装SVN程序并准备存储仓库;
  • 配置SVN账户并给予权限;
  • svn服务端阶段上传测试数据;
  • linux客户端操作使用svn程序;
  • windows客户端安装客户端程序;
  • windows客户端使用ww用户在svn程序检出数据;
  • windows客户端节点使用ww用户删除svn库中数据;
  • windows客户端使用zs用户检出数据并且删除数据;
  • windows客户端使用zs用户上传项目开发代码;
  • windows客户端使用zs用户回滚提交的数据;
  • windows客户端使用zs用户比较不同代码的异同点;
  • windows客户端使用zs用户导出项目的开发代码;

 

 

  • 安装SVN程序并准备存储仓库;

[[email protected] ~]# yum -y install subversion                     下载svn

[[email protected] ~]# tail -1 /etc/sysconfig/svnserve                

OPTIONS="-r /var/svn"

[[email protected] ~]# mkdir -p /var/svn/project  创建仓库

[[email protected] ~]# svnadmin create /var/svn/project/  创建项目

[[email protected] ~]# ls /var/svn/project/

conf  db  format  hooks  locks  README.txt

[[email protected] ~]# systemctl start svnserve

[[email protected] ~]# systemctl enable svnserve

Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.

[[email protected] ~]# netstat -utpln |grep svn

tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1136/svnserve

 

  • 配置SVN账户并给予权限;

[[email protected] ~]# useradd zs 创建3个用户

[[email protected] ~]# useradd ls

[[email protected] ~]# useradd ww

[[email protected] ~]# echo 123123 |passwd --stdin zs

更改用户 zs 的密码 。

passwd:所有的身份验证令牌已经成功更新。

[[email protected] ~]# echo 123123 |passwd --stdin ls

更改用户 ls 的密码 。

passwd:所有的身份验证令牌已经成功更新。

[[email protected] ~]# echo 123123 |passwd --stdin ww

更改用户 ww 的密码 。

passwd:所有的身份验证令牌已经成功更新。

[[email protected] ~]# groupadd linuxfan 创建组

[[email protected] ~]# gpasswd -M zs,ls linuxfan 将再zs,ls,放在linuxfan组中

 

[[email protected] ~]# 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

[[email protected] ~]# setfacl -R -m g:linuxfan:rwx /var/svn/project/ 设置linuxfan组对/var/svn/project这个文件有最高权限

[[email protected] ~]# setfacl -R -m u:ww:rx /var/svn/project/ ##最少需要拥有rx权限,否则将无法检出

[[email protected] ~]# chown root:root /var/svn/project/

[[email protected] ~]# chmod 770 /var/svn/project/

[[email protected] ~]# 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::---

 

  • svn服务端阶段上传测试数据;

[[email protected] ~]# svn mkdir file:///var/svn/project/trunk1 -m 'create' ##-m选项后参数随意

提交后的版本为 1。

[[email protected] ~]# svn mkdir file:///var/svn/project/trunk2 -m 'create'

提交后的版本为 2。

[[email protected] ~]# svn mkdir file:///var/svn/project/trunk3 -m 'create'

提交后的版本为 3。

[[email protected] ~]# svn import /etc/init.d/ file:///var/svn/project/trunk4/ -m 'import'

正在增加       ...

...

提交后的版本为 4。

[[email protected] ~]# svn list  file:///var/svn/project/

trunk1/

trunk2/

trunk3/

trunk4/

[[email protected] ~]# svn list  file:///var/svn/project/trunk4

...所有子目录及文件

[[email protected] ~]# svn checkout file:///var/svn/project/trunk4 /tmp/ ##检出svn中的文件

[[email protected] ~]# 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

[[email protected] ~]# svn delete file:///var/svn/project/trunk4/ ##删除svn版本库中文件

 

  • linux客户端操作使用svn程序;

[[email protected] ~]# yum -y install subversion

[[email protected] ~]# svn list svn+ssh://[email protected]/var/svn/project/

[email protected]'s password:

trunk1/

trunk2/

trunk3/

trunk4/

[[email protected] ~]# svn list svn+ssh://[email protected]/var/svn/project/trunk4/

[email protected]'s password:

authconfig

cbq/

console/

cpupower

crond

...

 

  • windows客户端安装客户端程序;

基于SSH的SVN搭建

 

基于SSH的SVN搭建

 

基于SSH的SVN搭建

 

基于SSH的SVN搭建

基于SSH的SVN搭建

基于SSH的SVN搭建

 

基于SSH的SVN搭建

基于SSH的SVN搭建

 

  • windows客户端使用ww用户在svn程序检出数据;

 

 

基于SSH的SVN搭建

 

基于SSH的SVN搭建

基于SSH的SVN搭建

基于SSH的SVN搭建

基于SSH的SVN搭建