一、什么是Subversion?

Subversion是一个自由/开源的版本控制系统。

Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行,开发速度会更快。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。

二、Subversion有哪些特性?

Subversion支持:

  • 版本化的目录
  • CVS只能跟踪单个文件的变更历史,但是Subversion实现的“虚拟”版本化文件系统则可以跟踪目录树的变更。在Subversion中,文件和目录都是版本化的。
  • 真实的版本历史
  • 由于只能跟踪单个文件的变更,CVS无法支持如文件拷贝和改名这些常见的操作—这些操作改变了目录的内容。同样,在CVS中,一个目录下的文件只要名字相同即拥有相同的历史,即使这些同名文件在历史上毫无关系。而在Subversion中,可以对文件或目录进行增加、拷贝和改名操作,也解决了同名而无关的文件之间的历史联系问题。
  • 原子提交
  • 一系列相关的更改,要么全部提交到版本库,要么一个也不提交。这样用户就可以将相关的更改组成一个逻辑整体,防止出现只有部分修改提交到版本库的情况。
  • 版本化的元数据
  • 每一个文件和目录都有自己的一组属性—键和它们的值。可以根据需要建立并存储任何键/值对。和文件本身的内容一样,属性也在版本控制之下。
  • 可选的网络层
  • Subversion在版本库访问的实现上具有较高的抽象程度,利于人们实现新的网络访问机制。Subversion可以作为一个扩展模块嵌入到Apache之中。这种方式在稳定性和交互性方面有很大的优势,可以直接使用服务器的成熟技术—认证、授权和传输压缩等。此外,Subversion自身也实现了一个轻型的,可独立运行的服务器软件。这个服务器使用了一个自定义协议,可以轻松的用SSH封装。
  • 一致的数据操作
  • Subversion用一个二进制差异算法描述文件的变化,对于文本(可读)和二进制(不可读)文件其操作方式是一致的。这两种类型的文件压缩存储在版本库中,而差异信息则在网络上双向传递。
  • 高效的分支和标签操作
  • 在Subversion中,分支与标签操作的开销与工程的大小无关。Subversion的分支和标签操作用只是一种类似于硬链接的机制拷贝整个工程。因而这些操作通常只会花费很少且相对固定的时间。
  • 可修改性
  • Subversion没有历史负担,它以一系列优质的共享C程序库的方式实现,具有定义良好的API。这使得Subversion非常容易维护,和其它语言的互操作性很强。

三、Subversion的架构

图中的一端是保存所有版本数据的Subversion版本库,另一端是Subvesion的客户程序,管理着所有版本数据的本地影射(称为“工作拷贝”),在这两极之间是各种各样的版本库访问(RA)层,某些使用电脑网络通过网络服务器访问版本库,某些则绕过网络服务器直接访问版本库。

四、Subversion的组件

安装好的Subversion由几个部分组成,下面将简单的介绍一下这些组件。

  • svn——命令行客户端程序。
  • svnversion——此工具用来显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)。
  • svnlook——直接查看Subversion版本库的工具。
  • svnadmin——建立、调整和修复Subversion版本库的工具。
  • svndumpfilter——过滤Subversion版本库转储数据流的工具。
  • mod_dav_svn——Apache HTTP服务器的一个插件,使版本库可以通过网络访问。
  • svnserve——一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式。
  • svnsync——一个通过网络增量镜像版本库的程序。

五、subversion的安装过程

5.1、环境准备:

1、关闭防火墙并禁止开机自启

#systemctl stop firewalld && systemctl disable firewalld

2、关闭selinux

#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3、为版本库目录专门准备一块盘,本例中为sdb

#parted /dev/sdb

#pcvreate /dev/sdb1

#vgcreate vgsvn /dev/sdb1

#lvcreate -n lvsvn -l pe值 /dev/vgsvn /dev/sdb1

#mkfs.xfs /dev/vgsvn/lvsvn

#mkdir /var/svnrepos

#mount /dev/vgsvn/lvsvn /var/svnrepos

#vi /etc/fstab

5.2、安装subversion

1、#yum -y update ##我这里的服务器可以上互联网,因此先更新下yum源

2、#yum -y install subversion ##使用yum直接安装subversion

3、#rpm -ql | grep -i subversion ##装完查下包的版本

4、创建版本库根目录,由于我在之前已经创建了,这里就不创建了。需要说明的一点就是,使用yum安装的subversion,版本库目录默认需要在/var/下

5、#svnadmin create /var/svnrepos/XXXX ##根据项目创建svn版本库,XXX就是你要创建的版本库名称,这个可以自定义,我这里是zettakit

6、#cd /var/svnrepos/XXXX ##版本库创建成功后cd进去,然后我们对版本库下的文件进行配置

下图是关于相关文件目录的详解:

7、# vim svnserve.conf ##修改对应版本仓库的svnserve.conf配置文件,主要修改的参数如下:

8、#vim auth ##修改对应版本仓库的认证文件,具体参数修改如下图:

9、#vim passwd ##修改对应版本仓库的密码配置文件,具体配置如下图:

10、#svnserve -d -r /var/svnrepos ##修改完上述配置文件后,就可以启动服务了

11、验证端口是否监听,进程是否启动

至此,apache subversion服务端就已经配置完成,接下来就只需要进行客户端安装就行了。我这里客户端选用的是tortoiseSVN

六、安装TortoiseSVN客户端

1、下载TortoiseSVN

下载地址:Downloads · TortoiseSVN

选择对应的版本下载即可,建议顺便把语言包也下载下来,这样后期使用会方便很多。

2、运行TortoiseSVN和language安装程序(一直下一步即可)

3、创建工作目录(我直接放在D盘)

所谓的工作(working)目录其实就是您平常用来存放工作档案的地方。通常我们会等到自己的工作做的一个段落的时候再进行备份。所以我们平常都是在工作 (working)目录下面工作,等到适当时机在 commit(提交到) 到 repository (版本库)中。

举例来说,我们想在 D 盘下面建立一个名为 working的目录。

4、进入工作目录,在空白处右键选择svn检出

5、输入版本库的URL

6、检出完成

至此,TortoiseSVN的安装与基本使用就ok了,至于其他用户可以通过帮助进行学习。

CentOS7部署Subversion服务器和TortoiseSVN客户端简记相关推荐

  1. CentOS7部署Apache服务器

    这篇文章讲解如何在CentOS7上部署自己的Apache服务器. 文章目录 一.Apache服务器简述 二.部署Apache服务器 1.安装Apache 三.修改Apache默认配置(可选) 1.查看 ...

  2. Centos7部署ntp服务器同步时间以及直接将本地时间同步为北京时间

    一.查看配置 查看时区列表: timedatectl list-timezones|grep Asia 查看当前时间: date 查看当前设置: [root@localhost ~]# timedat ...

  3. centos7安装dhcp服务器并由客户端动态获取IP地址

    主机架构: 角色 ip地址 网关 dhcp服务器 192.168.8.81 192.168.8.1 客户机1 动态获取 192.168.8.81 客户机2 192.168.8.99 192.168.8 ...

  4. SubVersion服务器Windows安装过程

    1.环境和软件准备 操作系统: windows 7 Window-Subvsersion : http://subversion.tigris.org/servlets/ProjectDocument ...

  5. ruby网站部署到服务器,ruby网站部署到服务器

    ruby网站部署到服务器 内容精选 换一换 本章节通过示例项目"超级冷笑话网站"介绍如何使用DevCloud开发基于C#语言的Web应用.项目名称:超级冷笑话网站.项目简介:&qu ...

  6. centos7下svnserve方式部署subversion/SVN服务端(实操)

    一般来说,subversion服务器可以用两种方式架设: 一种是基于svnserve,svnserve作为服务端: 一种是基于Apache,用apache作为服务端. 这里采用第一种方式部署. 执行如 ...

  7. Flask项目部署云服务器 CentOS7.3+Redis+MySQL+Flask+Nginx+Gunicorn +Supervisorctl

    Flask项目部署云服务器 CentOS7.3+Redis+MySQL+Flask+Nginx+Gunicorn +Supervisorctl 项目运行环境 阿里云(单核CPU, 2G内存, Cent ...

  8. centos7 部署glusterfs集群,服务端和客户端演示

    centos7 部署glusterfs集群,服务端和客户端演示 说明 glusterfs 分布式文件服务,详细可以百度 官网文档: https://docs.gluster.org/en/latest ...

  9. GIT-Linux(CentOS7)系统部署git服务器

    GIT-Linux(CentOS7)系统部署git服务器 root账号登录 一. 安装并配置必要的依赖关系 在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wge ...

最新文章

  1. Java中比较两个Double类型数据的大小
  2. OPPO智能眼镜发布,撕掉手机标签,CEO陈明永罕见亮相砸500亿投研发
  3. linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序
  4. android获取ro._修改Android序列号(Serial Number)
  5. 【华为云技术分享】HDC.Cloud | 为防止交通事故,95后学生运用“黑科技”这样做!
  6. 2021年财富世界500强,苹果是全球最赚钱公司,小米第338位,第一是它
  7. Java经纬度坐标与高斯坐标的转换
  8. window mysql 同步复制_Window环境下配置MySQL 5.6的主从复制、备份恢复
  9. react antd 更改table 表头和表行样式
  10. 【好文随记】牛人大学的感悟
  11. python打开360浏览器_使用python3.7 的pycharm selenium自动化测试中启动360浏览器、360极速浏览器的方法...
  12. 玩转 ESP32 + Arduino (十九) SIM800L上传数据到OneNet(新版Mqtts)
  13. 双硬盘SSD+HDD+ win10装双系统Ubuntu16.04
  14. qq邮箱smtp服务器imap,如何配置电子邮件客户端使用IMAP(QQ邮箱账户) 你需要学习了...
  15. vue table页合并相同数据单元格
  16. 一文掌握Tableau制作透视表/数据表
  17. Aspose.Cells企业案例:Setec 为物联网传感器和能源节约和消耗生成自动内部报告
  18. Xamarin for android学习总结一
  19. 微型计算机曾经使用过的字长,自考《计算机应用基础》模拟试题七
  20. (转)Native Extensions for Silverlight (NESL)?

热门文章

  1. VS 2010 中文版正式版无法安装Silverlight4 Tools的解决办法
  2. 中登公司统计数据好像有问题,看不懂。
  3. iframe展示html源代码,HTML DOM IFrame用法及代码示例
  4. 网页子窗口iframe的用法
  5. lenovo 邵阳E42-80 Ubuntu14.04.5 wireless 驱动安装
  6. Java更改 PDF 页面大小
  7. Ubuntu LiveSuit V3.06不能烧写问题
  8. 【论文简述】Multiview Stereo with Cascaded Epipolar RAFT(ECCV 2022)
  9. DNS域名 网址后缀的含义
  10. 返老还童!给老年鼠注入年轻鼠脑脊液可提升记忆力,斯坦福大学抗老研究登Nature...