运行环境

系统版本:CentOS Linux release 7.3.1611 (Core)

软件版本:Suberversion-1.7.14

硬件要求:无

安装过程

1、安装YUM-EPEL源

Subversion软件包由EPEL-YUM源提供。

[root@localhost ~]# yum -y install epel-release.noarch
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache

2、安装Subversion

[root@localhost ~]# yum -y install subversion

3、查看Subversion版本

[root@localhost ~]# svnserve --version -q
1.7.14

4、新建一个存储库

我们新建一个存储库"test",用于测试。

[root@localhost ~]# mkdir -p /data/svn/test
[root@localhost ~]# svnadmin create /data/svn/test/

5、配置存储库

[root@localhost ~]# vim /data/svn/test/conf/svnserve.conf
[general]
### 通用配置 ###
anon-access = none
# 配置匿名访问。
# read - 开启匿名访问功能,访问者拥有只读的操作权限。
# write - 开启匿名访问功能,访问者拥有可读可写的操作权限。
# none - 关闭匿名访问功能。
# 注:在开启授权访问的时候此项建议设置为“none”,不然会造成版本日志无法正常被客户端查看。
auth-access = write
# 配置授权访问,登录需要使用账号和密码。
# read - 开启授权访问功能,访问者拥有只读的操作权限。
# write - 开启授权访问功能,访问者拥有可读可写的操作权限。
# none - 关闭授权访问功能。
password-db = passwd
# 设置用户账号密码文件路径。
# 当开启授权访问时,用于配置用户的账号和密码。
authz-db = authz
# 设置用户权限控制文件路径。
# 当开启授权访问时,用于配置用户对存储库中的目录的操作权限。
realm = My First Repository
# 设置存储库的认证空间名,唯一标识,可以设置为存储库的路径,便于识别,也可以是一段描述信息。

6、创建存储库账号和密码

[root@localhost ~]# vim /data/svn/test/conf/passwd
[users]
### 配置账号密码 ###
# 配置格式:账号 = 密码。
test01 = 123456
test02 = 123456
test03 = 123456 7、配置账号操作权限
[root@localhost ~]# vim /data/svn/test/conf/authz
[groups]
### 配置用户组 ###
# 配置格式:组名 = 用户1,用户2,用户3、....
tests = test01,test02,test03 ### 配置用户对存储库目录权限 ###
# 配置格式:
# [存储库:目录]
# 用户 = 操作权限
# @用户组 = 操作权限
# * = 操作权限
# 操作权限:
# 空 - 无访问
# r - 只读
# rw - 可读可写
[test:/]
test01 = r
# 配置用户“test01”对存储库中的目录“/”拥有只读的操作权限。
@tests = rw
# 配置用户组“test”对存储库中的目录“/”拥有可读可写的操作权限。
* =
# 配置其他所有用户对存储库中的目录“/”没有任何访问权限。

8、启动Subversion服务

Subversion服务的默认端口为3690。

[root@localhost ~]# svnserve -d -r /data/svn
[root@localhost ~]# netstat -lnupt |grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 12135/svnserve

9、SVN客户端操作

SVN的客户端与服务端都是同一个软件,但是不同的操作命令。

9.1、配置文件忽略

默认情况下,SVN客户端会全局忽略上传一些“.so、.lib”库文件,防止无效的动态链接库文件及冗余文件上传,但是有时候我们这些文件也非常重要,需要上传时,则需去掉这些忽略项,编辑客户端配置文件去掉忽略项即可。

[root@localhost ~]# vim /root/.subversion/config
[miscellany]
# global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo
global-ignores =

9.2、将远端存储库检出到本地

将远端的存储库检出到本地目录,那么这个本地目录就会变成一个本地存储库,我们在这个目录下的一些操作都可以同步到远端存储库中。

我们第一次访问SVN存储库,需要输入账号密码,客户端会提示你“是否需要记住此账号密码”,我们选择“yes”记住密码,这样后面的操作就不需要频繁的输入账号密码了,用户账号密码会存储到“/root/.subversion/auth”目录下。

如果我们想要更换账号则只需要清除此目录即可。

[root@localhost ~]# mkdir test
[root@localhost ~]# svn checkout svn://172.18.188.121/test test
Authentication realm: <svn://172.18.188.121:3690> My First Repository
Password for 'root':
Authentication realm: <svn://172.18.188.121:3690> My First Repository
Username: test01
Password for 'test01': -----------------------------------------------------------------------
ATTENTION! Your password for authentication realm: <svn://172.18.188.121:3690> My First Repository can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details. You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Path: test
URL: svn://172.18.188.121/test
Repository Root: svn://172.18.188.121/test
Repository UUID: 14645214-cae9-4e70-a9cd-d19f3063813f
Revision: 0
Node Kind: directory
Last Changed Rev: 0
Last Changed Date: 2019-03-10 11:31:07 +0800 (Sun, 10 Mar 2019)

9.3、查看本地存储库信息

[root@localhost ~]# cd test/
[root@localhost test]# svn info

9.4、添加一个文件

[root@localhost test]# touch file01
[root@localhost test]# svn add file01
A file01

9.5、查看本地存储库文件变化状态

[root@localhost test]# svn status
A file01

9.6、将本地存储库的操作提交到远端存储库中

[root@localhost test]# svn commit -m '添加文件file01'
# 选项:
# -m 添加描述信息。
Adding file01
Transmitting file data .
Committed revision 1.

9.7、查看远端存储库中有那些文件

我们可以看到远端存储库中存在了我们刚刚添加的文件。

[root@localhost test]# svn list svn://172.18.188.121/test
file01

9.8、删除一个文件

[root@localhost test]# rm -rf file01
[root@localhost test]# svn delete file01
D file01
[root@localhost test]# svn status
D file01
[root@localhost test]# svn commit -m '删除文件'file01''
Deleting file01
Committed revision 2.
[root@localhost test]# svn list svn://172.18.188.121/test

9.9、更新本地存储库

当其他用户修改了远端存储库中的文件,我们需要更新本地存储库,以保证远端和本地存储库中版本一致,否则会出现版本冲突问题。

[root@localhost test]# svn update
Updating '.':
At revision 2.

9.10、文件恢复之版本退回

当我们不小心删除了存储库中的文件,并执行了提交操作时,想要找回被删除的文件时,只需要将版本回退到上一个版本即可。

将上一个版本的文件更新到本地存储库中,但是我们在执行“update”操作的时候,会将本地存储库更新到最新的版本,那么你会发现文件还是会被删除。

[root@localhost test]# svn log -v -l 2
------------------------------------------------------------------------
r2 | test01 | 2019-03-10 15:27:54 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
D /file01 删除文件file01
------------------------------------------------------------------------
r1 | test01 | 2019-03-10 15:27:23 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
A /file01 添加文件file01
------------------------------------------------------------------------
[root@localhost test]# svn update -r 1
Updating '.':
A file01
Updated to revision 1.
[root@localhost test]# ls
file01

9.11、文件恢复之版本合并

当我们不小心删除了存储库中的文件,并执行了提交操作时,想要找回被删除的文件时,只需要将版本回退到上一个版本即可。

但是你如果想要让删除前的操作为最新版本的话,则需要将最新的版本和上一个版本合并,这样就可以永久的做到文件恢复。

[root@localhost test]# svn log -v -l 2
------------------------------------------------------------------------
r2 | test01 | 2019-03-10 15:27:54 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
D /file01 删除文件file01
------------------------------------------------------------------------
r1 | test01 | 2019-03-10 15:27:23 +0800 (Sun, 10 Mar 2019) | 1 line
Changed paths:
A /file01 添加文件file01
------------------------------------------------------------------------
[root@localhost test]# svn merge -r 2:1 .
[root@localhost test]# svn update
Updating '.':
At revision 2.
[root@localhost test]# ls
file01

9.12、解决版本冲突问题

当本地存储库版本为“1”,我们在本地存储库中修改了文件,但是并未提交。这个时候远端存储库由于有其他用户做了提交操作,修改了相同的文件,现在远端存储库版本为“3”,那么这个时候我们在做“commit”或者“update”的时候就会出现版本冲突问题。

我们这个时候的解决方法就是将自己已经修改的文件拷贝到主机的其他目录下,然后将本地存储库回退到最初的版本状态,在执行“update”操作,然后再将文件拷贝到对应的本地存储库目录下,覆盖,在“commit”。

将本地存储库恢复到修改前的状态:

[root@localhost test]# svn revert .
这也可以是一个已修改的文件:
[root@localhost test]# svn revert file01
Reverted 'file01'

安装Suberversion[SVN]到CentOS(YUM)的更多相关文章

  1. redhat下yum命令安装(替换为centos yum命令)

    redhat默认自带的yum源需要注册,才能更新,报错:This system is not registered to Red Hat Subscription Management. You ca ...

  2. CentOS7 编译安装 Mongodb (实测 笔记 Centos 7.0 + Mongodb 2.6.6)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  3. CentOS7 编译安装 Nodejs (实测 笔记 Centos 7.0 + node 0.10.33)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  4. CentOS7 编译安装 Nginx (实测 笔记 Centos 7.0 + nginx 1.6.2)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  5. CentOS7 编译安装 Mariadb (实测 笔记 Centos 7.0 + Mariadb 10.0.15)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  6. CentOS 编译安装 Redis (实测 笔记 Centos 7.3 + redis 3.2.8)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  7. CentOS 编译安装 Nodejs (实测 笔记 Centos 7.3 + node 6.9.5)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  8. 阿里云服务器Linux CentOS安装配置(二)yum安装svn

    阿里云服务器Linux CentOS安装配置(二)yum安装svn 1.secureCRT连接服务器 2.先创建一个文件夹,用来按自己的习惯来,用来存放数据 mkdir /data 3.yum安装sv ...

  9. 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat

    阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat  执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...

随机推荐

  1. Android设置TextView为不可见

    通常控件的可见与不可见分为三种情况. 第一种    gone         表示不可见并且不占用空间 第二种    visible       表示可见 第三种    invisible    表示 ...

  2. Windows 10搭建FTP服务器

    1 开启FTP服务 控制面板 -> 程序和功能 -> 启用或关闭Windows功能 找到下面选项的勾选 2 添加FTP站点 在开始菜单里面输入 IIS 搜索并打开 IIS管理器 展开左侧菜 ...

  3. 面试官:说一说Zookeeper中Leader选举机制

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又是一个阳光明媚的一天,我又 ...

  4. For-Each循环(增强型For循环)

    public class Demo077 { public static void main(String[] args) { int[] array ={11,2}; System.out.prin ...

  5. bootStrap简要和学习笔记

    bootStrap简要和学习笔记前端在学些了html.css.JavaScript三件套后,我们感觉前端变数太多了,需要创造力来设计一些可能经常使用的界面啊.按钮样式啊等,也就有了一些前端的框架,那何 ...

  6. Java语言学习day37--8月12日

    今日内容介绍1.List接口2.Set接口3.判断集合唯一性原理 ###01List接口的特点 A:List接口的特点: a:它是一个元素存取有序的集合. 例如,存元素的顺序是11.22.33.那么 ...

  7. Element修改弹窗类组件的层级

    前情 Element,一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,在项目中我们就使用了它,非常nice 坑位 在使用Element组件的时候,一切都十分顺利,但是在使用弹 ...

  8. Python学习笔记: pip install 常见错误汇总

    本机环境RHEL8, Python3.9 pip install: 无法安装最新版本的包 在pypi上查看pkg的页面,因为有些pip包的版本对特定的python版本有要求 pip install e ...

  9. Linux获取本机公网IP,调整双节点主从服务的RPC调用逻辑

    简单记录一次双节点的之间的服务调用叭 ~ 现有: 服务A的双节点A1.A2 服务B的双节点B1.B2 服务A 和服务B 通过 Netty 实现 RPC 通信,可能会导致比较玄学的问题.如图: 要做到 ...

  10. 《图解UE4渲染体系》Part 1 多线程渲染

    上回书<Part 0 引擎基础>说到,我们粗略地知道UE4是以哪些类来管理一个游戏场景里的数据的,但这仅仅是我们开始探索UE4渲染体系的一小步. 本回主要介绍UE4渲染体系中比较宏观顶层的 ...