SVN Version Control(1) --Installing SVN on CentOS

这次笔者带来版本控制SVN的系列笔记。按照笔者的惯例,系列笔记的第一篇都是基础的环境搭建,先不说太多抽象的知识,因为笔者习惯于在接下去的笔记中贯穿这些知识,润物无声,潜移默化,这是笔者所希望达到的层次。

1. Checking SVN whether exist on CentOS

#查询CentOS是否已安装svn
rpm -aq subversion

出现下图的情况说明已安装
这里写图片描述
为什么我们需要先查看SVN(subversion)是否已经安装在了CentOS上呢?
如果你看过笔者Linux Series Notes(1)– Installing CentOS7 and configurating something essential of its就会发现笔者在安装的时候并不是选择了最小化的安装方式,而是勾选了一些常用的软件和CentOS一同安装,此时SVN就有可能包括在内了,这样就省去了一些多余的安装时间。当然,如果说是像阿里云、腾讯云这类的产品,如果不选择购买别人制作好的成套安装镜像,那就要从裸机开始了!

#如果没有安装,那么就使用yum进行安装,或者自行下载压缩包进行安装
yum -y install subversion

2. Creating the directory of data

mkdir -p /application/svndata#数据存储根目录
mkdir -p /application/svnpasswd#用户,密码权限目录

这里我们建立了两个目录,其中svndata是用于存储我们需要进行版本控制的数据,也就是说这里是用于创建我们版本控制库(respository)的,;而svnpasswd是用于独立出来用于存储连接SVN的用户和其密码的,主要是authz(权限管理)和passwd(用户和密码管理),这里的passwd是明文存储的,需要十分注意数据的安全性。

3. Starting the SVN

我们先来看看svn拥有的命令,有助于我们理解。

svnserve --help
用法: svnserve [-d | -i | -t | -X] [options]
有效选项: 
  -d [--daemon] : 后台模式
  -i [--inetd] : inetd 模式
  -t [--tunnel] : 隧道模式
  -X [--listen-once] : 监听一次方式(调试用)
  -r [--root] ARG : 服务的根目录
  -R [--read-only] : 强制只读;覆盖版本库配置文件
  --config-file ARG : 从文件 ARG 读取配置
  --listen-port ARG : 监听端口
                             [方式: daemon, listen-once]
  --listen-host ARG : 监听主机名称或IP地址
                             [方式: daemon, listen-once]
  -6 [--prefer-ipv6] : 在使用主机名称监听时,首选 IPv6
                             [默认首选 IPv4。不支持在守护进程模式中同时使用 IPv4
                             和 IPv6。如果需要,请使用 inetd 模式或隧道模式。]
  -c [--compression] ARG : 用于网络传输的压缩级别
                             [0 .. 不压缩, 5 .. 默认, 
                              9 .. 最大压缩]
  -M [--memory-cache-size] ARG : 用来减少冗余操作的内存中的额外高速缓存的大小(MB)
                             线程模型的默认值是 128,非线程模型的默认值是 16。
                             [仅用于 FSFS 仓库]
  --cache-txdeltas ARG : 是否对旧版本之间的差异启用缓存
                             默认值: 否。
                             [仅用于 FSFS 仓库]
  --cache-fulltexts ARG : 是否对文件内容启用缓存
                             默认值: 是。
                             [仅用于 FSFS 仓库]
  -T [--threads] : 使用线程代替进程 [方式: daemon]
  --foreground : 在前台运行(调试用)
                             [方式: daemon]
  --log-file ARG : svnserve 日志文件
  --pid-file ARG : 写进程 PID 到文件 ARG
                             [方式: daemon, listen-once]
  --tunnel-user ARG : 隧道用户名(默认是当前UID对应的用户名)
                             [方式: tunnel]
  -h [--help] : 显示本帮助
  --version : 显示程序版本信息
  -q [--quiet] : 在标准错误输出不显示进度 (仅错误)

接下来我们开始启动SVN:

svnserve -d -r /application/svndata/

这里我们以守护线程的方式启动SVN,并指定SVN服务的根目录,这样连接到我们这个SVN的用户所上传的数据都是存放在这个根目录下了。

接下来我们查看下SVN服务所在端口

netstat -lntup|grep svn
#上面的命令查看到端口后,可以使用接下来的命令查看更详细的端口情况
netstat -lnt|grep 3690
netstat -lntup|grep 3690
lsof -i tcp:3690
lsof -i :3690

这里写图片描述

4. Creating the version control respository

我们可以通过查看svn的create命令获取一些帮助

svnserve help create

这里写图片描述
这里给出了创建demo,那么我们跟着demo做就好了。

svnadmin create /application/svndata/sadoc

这里我们创建了sadoc目录,这个目录就是我们接下来要使用TortoiseSVN(windows客户端)连接仓库。
这里写图片描述
接着我们使用tree(笔者认为它比ls要直观些)来观察sadoc目录下都有哪些文件。

tree /application/svndata

这里写图片描述
注:没安装的可以使用以下命令进行tree的安装yum install tree

5.Modifying the configuration of SVN

现在我们开始对SVN进行配置文件的配置,在修改配置文件的时候要注意:事前备份,事后检查(检查重点包括:语法和配置文件的配置更改),最后看是否需要重启服务。
这里写图片描述
在这里我们需要对svnserve.conf进行一次备份,备份是为等下修改完后使用diff来检查下我们修改了哪些地方,而剩下的authz和passwd我们是复制副本放到/application/svnpasswdcp authz passwd /application/svnpasswd/,也算是做了备份。
注:svnserve.conf修改后是需要重启SVN服务,而authz和passwd修改后可以不进行SVN的重启

5.1 svnserve.conf

修改成下面的配置
这里写图片描述
在这里如果anon-access = yes,也就是允许匿名连接,这样会造成一个问题:使用TortoiseSVN进行文件的上传的时候只能选择1970/01/01的时间,而且log的信息,如下图:
这里写图片描述
修改完后,我们使用diffegrep查看修改

5.1.1 diff

diff svnserve.conf.tmp svnseve.conf

这里写图片描述

5.1.2 egrep

egrep "\-application|\-db =" svnserve.conf

这里写图片描述

5.2 passwd

我们把passwd和authz放置到/svnpasswd下时需要先查看文件的权限,如果文件的权限过于宽松我们还需要进行权限修改,避免后期发生令人迷惑的事故。
这里写图片描述
这权限明显过于宽松,我们现在开始赋予新的权限。

chmod 700 /application/svnpasswd/*

这里写图片描述
现在我们开始添加用户和密码。

cd /application/svnpasswd/
vim passwd#密码为明文,需要注意密码的权限

这里写图片描述
SVN是比较人性化的,每个配置文件都会给出详细的说明以及例子,我们需要认真阅读说明并严格按照例子的格式进行配置,避免出现语法错误。

5.3 authz

authz是对我们刚刚配置用户进行权限的赋予,要注意不能对一个没有出现在passwd的用户进行权限赋予。
这里写图片描述
这里[groups]是对用户进行分组,[/]这里的* =配置是为了通配任意用户([/]准确来说是表示根目录以及以下,根目录是svnserve启动时指定的,比如我们指定的是svnserve -d -r /application/svndata,此时表示对全部版本库设置权限),赋予空权限,[sadoc:/]这里是赋予sadoc respository这个根版本库下目录的访问权限给特定的用户或者特定的一组用户。

5.4 reboot SVN

pkill svnserve#先杀死线程
svnserve -d -r /application/svndata/#再次启动

这里写图片描述

6. Using TortoiseSVN to connect with SVN on remote server

6.1 SVN服务的访问方式

主要包括以下3种:

  1. 独立服务器访问
    访问地址:svn://server_addr/respository。我们这次的TortoiseSVN主要访问方式就是这种。
  2. 借助apache此类http服务
    访问地址:http://server_addr/respository。这种http的服务有两种安装方式,包括单独安装apache和SVN还有就是CSVN整合安装(这是带有web界面管理的SVN软件)。
  3. 本地直接访问
    访问地址:file:///server_addr/respository。这主要用在服务器端。
    给出一个表格来更加详细地说明客户端对服务端SVN的访问。
访问方式说明
File://直接通过本地磁盘或者网络磁盘访问版本库
http://通过webDAV协议访问支持subversion的apache服务器
https://与http://相似,但是用SSL加密访问
Svn://通过TCP/IP自定义协议访问svnserve服务器
Svn+ssh://通过认证并加密的TCP/IP自定义协议访问svnserve服务器

6.2 TortoiseSVN

安装就不说了。
现在我们先新建一个目录,这个目录是用于同步远程的SVN repository的。然后右键找到TortoiseSVN的操作菜单中checkout选项,把远程SVN respository下载下来。
下面是连接过程中的部分截图
这里写图片描述
这里写图片描述
现在我们来尝试上传文件,因为我们已经开始使用SVN进行了团队的开发(即使不是,但我们仍然是使用了SVN)就要记住:任何时候先update下载SVN中最新的版本下来,再commit我们修改文件到SVN,如果我们发生了提交的冲突,也是先update然后右键找到TortoiseSVN的操作菜单中resolve选项解决冲突。
这里写图片描述
注:文件名最好不要带空格,会给后面我们使用hooks带来麻烦,这是第一次示范,先不管先,以后空格记得先用下划线“_”替代再commit
这里写图片描述
这里写图片描述
这里写图片描述
这就上传成功了。
我们可以通过以下方式进行查看。
这里写图片描述
这里写图片描述

好了,这次就先到这了!
在这里推荐下老男孩的linux课程。
感谢各位的支持!如果note有错漏,恳请各位留下评论指出,笔者会及时改正!
谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值