码迷,mamicode.com
首页 > 其他好文 > 详细

安装Suberversion[SVN]到CentOS(YUM)

时间:2020-03-02 13:08:29      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:server   版本   服务   用户   url   权限   rect   最新版   checkout   

运行环境

系统版本: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)

标签:server   版本   服务   用户   url   权限   rect   最新版   checkout   

原文地址:https://www.cnblogs.com/network-ren/p/12394893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!