在小公司上班,很多项目都是自己一个人单自开发的,完全用不到什么分布式、自动发布啥的,于是我又怀恋svn这款版本工具了,谈不上情怀,就是觉得亲切,配置简单。

一、Svn是什么

  • 简介
    Svn 全称 subversion。是一个开源版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。通过她,开发者可以很容易的将数据恢复到以前的版本,并且可以查看数据的修改细节等。可以将其称为一种“时间机器”。
    Subversion 允许不同的用户在各自的电脑上以多线程的模式修改和管理同一组位于中心版本库的数据,因此可以促进团队协作。另外,它是一个通用系统,可以管理任何类型的文件集。
    其它常见版本控制系统:VSS,Visual Source Save,微软公司的版本控制器软件;CVS,Concurrent Versions System,开源免费的另外一款版本控制系统;ClearCase,IBM公司的。
  • svn原理
    Svn对于客户端和服务端数据文件的交互可以选择多种协议,svn协议、http或者https协议,默认支持svn协议,借助mod_dav_svn 模块,配合http服务器比如apache可以支持http和https协议。对应这两种不同协议,svn有2种不同的运行方式,一种是独立的svn服务器,另一种是借助apache运行。
    Svn采用的是C/S架构,用户通过svn客户端操作svn服务器上的版本库。如下图1所示。
    在这里插入图片描述

svn存储版本数据也有2种方式:BDB(一种事务安全型存储模式,Berkeley DB 数据库)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

  • 为什么使用svn
    1.为团队提供了所有项目文档的回退按钮;
    2.支持多个开发人员在可控的方式下为相同的代码工作;
    3.版本控制系统保存了文档在过去的各个改动,便于查找是谁,在何时,因为什么修改了文档;
    4.支持在文档的主线上同时有多个版本;
    5.支持查询在某个时点上项目各个文档的状态,可用于研究生产效率等,也可用于对以前的软件发行版的再发行。

二、Svn编译安装

  • 资料准备

在这里插入图片描述

[root@iZm5eejq1i5n8h97elgv2tZ svnlinux]# ls
apr-1.5.0.tar.gz  apr-util-1.5.3.tar.gz  sqlite-amalgamation-3071501.zip  subversion-1.8.5.tar.gz  

  • 安装过程
cd /usr/local/src
tar -zxvf subversion-1.8.5.tar.gz
unzip sqlite-amalgamation-3071501.zip
mv ./sqlite-amalgamation-3071501 ./subversion-1.8.5/sqlite-amalgamation
cd subversion-1.8.5
./configure --prefix=/usr/local/svn/   --without-berkeley-db   --with-zlib
make&&make install
###设置环境变量
echo 'export PATH=/usr/local/svn/bin:$PATH'>>/etc/profile
source /etc/profile
#测试是否安装成功:
svnserve --version
mkdir -p /data/svndata/yxyweb
#创建svn目录
svnadmin create /data/svndata/yxyweb

#
mkdir -p /data/project

#连接svn
svn checkout svn://127.0.0.1/yxyweb /data/project
svn update /data/project

### 启动svn

svnserve -d -r /data/svndata

  • 配置说明

#修改passwd配置如下信息
[users]
# harry = harryssecret
# sally = sallyssecret
cmm = 123456..

#修改authz信息 配置如下

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = cmm
# [/foo/bar]
# harry = rw
# &joe = r
# * =
[/]
@admin = rw
cmm = rw
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[svndata:/repos1]
cmm = rw

#修改svnserve.conf

anon-access = read
auth-access = write

password-db = passwd
authz-db = authz

客户端连接
我们在客户端上安装svn客户端工具一般我使用这个【tortoisesvn】小乌龟https://tortoisesvn.net/downloads.html
安装后在桌面右键会有svncheckout选项。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐