运行环境

系统版本: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. 12 Factor App

    The Twelve-Factor App Introduction In the modern era, software is commonly delivered as a service: c ...

  2. 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用

    疫情期间,很多线下活动转为线上举行,实时音视频的需求剧增,在视频会议,在线教育,电商购物等众多场景成了"生活新常态". 本文将教你如何通过即构ZEGO sdk在Android端搭建 ...

  3. 微信小程序 使用filter过滤器几种方式

    由于微信小程序 技术生态比较闭合,导致很多 现代前端框架很多积累出的成果都没有实现(可能未来会逐一实现). 用惯了现代 再耍小程序 总感觉很不顺手. 需要结果的请直接看最后的WXS View Filt ...

  4. 你可以说出export export default || model.exports exports 的区别吗(一)

    一.前言: 用模块写代码,为什么要用模块来写代码:ES6之前,在js中定义的一切,都是共享一个全局作用域的,随着web应用变得复杂,这样做会引起如:命名冲突和安全问题.于是引入了模块. 二.清楚一个概 ...

  5. java的命令行参数到底怎么用,请给截图和实际的例子

    8.2 命令行参数示例(实验) public class Test {    public static void main(String[] args){        if(args.length ...

  6. openlayer路线箭头

    // 用于设置线串所在的矢量图层样式的函数 var styleFunction = function(feature,res){ //轨迹线图形 var trackLine= feature.getG ...

  7. thymeleaf模板使用

    使用模板页面,实现在同一个页面展现不同数据,controller实现页面跳转的时候就不在需要打开新页面

  8. 3.SRE.操作手册:基础篇

    SRE的根基起码应该包括:SLO.监控.告警.减少琐事和简单化. SLO(服务质量目标):用于描述服务可靠性的程度. SRE的职责并不只是将"所有工作"都自动化,并保持" ...

  9. 1903021116—吉琛—Java第三周作业—eclipse创建Java程序

    项目 内容 课程班级博客链接 19级信计班 这个作业要求链接 eclipse如何创建java程序 java语言基础(上) 我的课程学习目标 1. 学习博客园更多使用技巧 2. 通过作业实践熟练与熟悉掌 ...

  10. Transactional事务,事务嵌套的时候,如果主事务出现问题,子事务执行不需要回滚怎么做?

    如果调用的方法在不在同一个service当中,则只需要在子事务当中的方法上方添加注解即可 下方即是:这就话代表:重新开启一个新的事务 @Transactional(propagation = Prop ...