SVN的配置记录

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

场景介绍:最近朋友公司想搭建一套版本控制软件,让我推荐下,我跟他说SVN或者GIT都可以,最后他选择使用SVN作为版本控制,我简单的跟他写了个文档跟他介绍下:

一、SVN是什么?

1、subversion

2、SVN是一个版本管理工具

3、所有数据都集中在档案库里,类似于FTP工具

4、管理任意一个元素(文件),任何时刻的变化,ftp只是一个上传下载的工具(SVN会备份并记录每个文件每一次的修改更新变动)

常用的版本管理工具:vss,cvs,svn,git


二、svn与git的简单区别:

1、svn是一个集中式的版本管理,git是一个分布式版本控制

2、svn要做版本管理的话,必须要提交到服务器上,而git,就算服务器断开的话,还可以在本地做版本控制

3、GIT把内容按元数据方式存储,而SVN是按文件

4、GIT没有一个全局的版本号,而SVN有

5、GIT的内容完整性要优于SVN

参考资料:http://www.oschina.net/news/12542/git-and-svn


三、运维人员应该掌握哪些版本管理:

对于版本管理系统,运维人员需要掌握的技术点:

1、安装、部署、维护、排障

2、简单实用,很多公司都是开发来管理,包括建立新仓库和添加删除账号

3、对于版本控制系统,运维人员相当于开发商,开发人员是业主,运维搭建的系统为开发人员服务


四、SVN服务运行模式与访问模式

1、独立服务器访问

访问地址如:svn://svn.test.com/os


2、借助apache等http服务

访问地址如:http://svn.test.com/os

a)单独安装apache+svn(不要用)

b)CSVN(apache+svn)是一个单独的整合的软件,带web界面管理的SVN软件


3、本地直接访问

file:///application/svndata/os

推荐svn以及csvn web管理方式


五、SVN 的工作原理:

采取客户端/服务器模式——在服务器的版本库中保存项目文件的各个版本, 所有参与协同开发的程序员在自己本地电脑上保存一个工作副本。

SVN 支持程序员将本地副本更新到服务器端的最新版本,也支持将本地副本的最新改变更新到服务器端, 而且后面的更新不会覆盖前面的更新,而是作为一个新的版本被保存下来——SVN甚至支持将本地工作副本恢复为服务器端保存的某一个历史版本。


六、SVN基本操作:

1、检出(checkout):将一个服务器端创建好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需执行一次。

2、更新(update):将本地文件更新为服务器端的最新版本,通常为每天上班时或修改公共文件之前执行一次。

3、提交(commit):将本地修改提交到服务器端。通常每天下班前或每实现一个功能、完成一个模块时执行一次。


七、SVN的安装与配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[root@LVS-DR01 ~] # yum -y install subversion
[root@LVS-DR01 ~] # rpm -qa subversion
subversion-1.7.14-10.el7.x86_64
[root@LVS-DR01 ~] # svnserve --version
svnserve, version 1.7.14 (r1542130)
    compiled Nov 20 2015, 19:25:09
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file  for  more  information.
Subversion is  open  source  software, see http: //subversion .apache.org/
The following repository back-end (FS) modules are available:
* fs_base : Module  for  working with a Berkeley DB repository.
* fs_fs : Module  for  working with a plain  file  (FSFS) repository.
Cyrus SASL authentication is available.
创建svn数据目录,默认的svn目录是 /var/svn ,需要我们手动创建:
[root@LVS-DR01 ~] # mkdir -p /var/svn
使用svnadmin初始化仓库:
[root@LVS-DR01 ~] # svnadmin create /var/svn
[root@LVS-DR01 ~] # tree /var/svn
/var/svn
├── conf
│?? ├── authz
│?? ├──  passwd
│?? └── svnserve.conf
├── db
│?? ├── current
│?? ├──  format
│?? ├── fsfs.conf
│?? ├── fs- type
│?? ├── min-unpacked-rev
│?? ├── revprops
│?? │?? └── 0
│?? │??     └── 0
│?? ├── revs
│?? │?? └── 0
│?? │??     └── 0
│?? ├── transactions
│?? ├── txn-current
│?? ├── txn-current-lock
│?? ├── txn-protorevs
│?? ├── uuid
│?? └── write-lock
├──  format
├── hooks
│?? ├── post-commit.tmpl
│?? ├── post-lock.tmpl
│?? ├── post-revprop-change.tmpl
│?? ├── post-unlock.tmpl
│?? ├── pre-commit.tmpl
│?? ├── pre-lock.tmpl
│?? ├── pre-revprop-change.tmpl
│?? ├── pre-unlock.tmpl
│?? └── start-commit.tmpl
├── locks
│?? ├── db.lock
│?? └── db-logs.lock
└── README.txt
10 directories, 27 files
[root@LVS-DR01 ~] # cd /var/svn/conf/
[root@LVS-DR01 conf] # ll
total 12
-rw-r--r-- 1 root root 1080 Jun 14 14:59 authz
-rw-r--r-- 1 root root  309 Jun 14 14:59  passwd
-rw-r--r-- 1 root root 3090 Jun 14 14:59 svnserve.conf
[root@LVS-DR01 conf] # cp svnserve.conf svnserve.conf.bak

八、开启SVN服务:

1
2
3
4
5
6
7
8
9
10
11
[root@LVS-DR01 ~] # systemctl start svnserve.service
[root@LVS-DR01 ~] # systemctl status svnserve.service
[root@LVS-DR01 ~] # systemctl enable svnserve.service
Created  symlink  from  /etc/systemd/system/multi-user .target.wants /svnserve .service 
to  /usr/lib/systemd/system/svnserve .service.
SVN默认开启3690端口,检查下:
[root@LVS-DR01 ~] # lsof -i :3690
COMMAND    PID USER   FD   TYPE DEVICE SIZE /OFF  NODE NAME
svnserve 60317 root    3u  IPv4 286761      0t0  TCP *:svn (LISTEN)
[root@LVS-DR01 ~] # netstat -antp | grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*         LISTEN      60317 /svnserve

九、修改SVN默认位置

1
2
3
4
5
6
7
8
9
10
在CentOS7下使用yum直接安装SVN,修改SVN默认项目的位置
[root@LVS-DR01 svn] # mkdir -p /dawnpro/svn
[root@LVS-DR01 conf] # vim /etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
# Specify the repository location in -r parameter:
OPTIONS= "-r /dawnpro/svn"
#OPTIONS="-r /var/svn"
说明:将 /var/svn 目录调整为 /dawnpro/svn
[root@LVS-DR01 conf] # systemctl restart svnserve

十、创建svn版本库目录

1
2
3
4
5
6
7
8
9
10
[root@LVS-DR01 svn] # cd /dawnpro/svn/
[root@LVS-DR01 svn] # mkdir -p EIP EMS SAP
[root@LVS-DR01 svn] # svnadmin create EIP
[root@LVS-DR01 svn] # svnadmin create EMS
[root@LVS-DR01 svn] # svnadmin create SAP
[root@LVS-DR01 svn] # ll
total 0
drwxr-xr-x 6 root root 86 Jun 16 21:56 EIP
drwxr-xr-x 6 root root 86 Jun 16 21:56 EMS
drwxr-xr-x 6 root root 86 Jun 16 21:57 SAP

十一、新建个目录统一管理用户权限

1
2
3
4
5
[root@LVS-DR01 ~] # mkdir -p /dawnpro/svn/conf/
[root@LVS-DR01 ~] # cp /dawnpro/svn/EIP/conf/* /dawnpro/svn/conf/
[root@LVS-DR01 ~] # cd /dawnpro/svn/conf/
[root@LVS-DR01 conf] # ls
authz   passwd

十二、修改权限管理文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[root@LVS-DR01 conf] # egrep -v "^#|^$" authz 
[ groups ]
EIP = EIP01,EIP02
EMS = EMS02,EMS02
SAP = SAP01,SAP02
[/]
* =
[EIP:/]
@EIP = rw
* =
[EMS:/]
@EMS = rw
* =
[SAP:/]
@SAP = rw
* =
说明:
a) * = 以上没有定义的用户都没有任何权限
b) @EIP = rw代表EIP组具有rw权限
[root@LVS-DR01 conf] # egrep -v "^#|^$" passwd 
[ users ]
admin = admin
EMS01 = EMS01
EMS02 = EMS02
EIP01 = EIP01
EIP02 = EIP02
SAP01 = SAP01
SAP02 = SAP02
[root@LVS-DR01 ~] # egrep -v "^#|^$" /dawnpro/svn/EIP/conf/svnserve.conf 
[general]
anon-access = none
auth-access = write
password-db =  /dawnpro/svn/conf/passwd
authz-db =  /dawnpro/svn/conf/authz
realm = EIP
[root@LVS-DR01 ~] # egrep -v "^#|^$" /dawnpro/svn/EMS/conf/svnserve.conf 
[general]
anon-access = none
auth-access = write
password-db =  /dawnpro/svn/conf/passwd
authz-db =  /dawnpro/svn/conf/authz
realm = EMS
[root@LVS-DR01 ~] # egrep -v "^#|^$" /dawnpro/svn/SAP/conf/svnserve.conf 
[general]
anon-access = none
auth-access = write
password-db =  /dawnpro/svn/conf/passwd
authz-db =  /dawnpro/svn/conf/authz
realm = SAP

十三、测试下权限配置的结果

a)使用SVN客户端访问SVN服务器

wKiom1lE8zyRmp-MAAAb6WZmAxk448.jpg

b)使用EIP01账号访问svn://10.10.10.101/EIP

wKioL1lE8zyS-RAGAABvIXaiP7Q229.jpg

c)测试上传"04-git诞生记.png",上传成功(过程太短,我就没截图)

wKiom1lE8zySqJv_AACHnnAQZYE217.jpg

d)换个账号进行测试(使用EMS01账号进行测试)

wKioL1lE8z7Rgc_RAABw8X9mucE144.jpg

e)提示没有权限(测试成功)

wKioL1lE8z7yIKHSAABN44KBMfM383.jpg

说明,SVN服务修改完配置文件,不需要重启SVN服务就可以直接生效。











本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1939358,如需转载请自行联系原作者
相关实践学习
高可用应用架构
欢迎来到“高可用应用架构”课程,本课程是“弹性计算Clouder系列认证“中的阶段四课程。本课程重点向您阐述了云服务器ECS的高可用部署方案,包含了弹性公网IP和负载均衡的概念及操作,通过本课程的学习您将了解在平时工作中,如何利用负载均衡和多台云服务器组建高可用应用架构,并通过弹性公网IP的方式对外提供稳定的互联网接入,使得您的网站更加稳定的同时可以接受更多人访问,掌握在阿里云上构建企业级大流量网站场景的方法。 学习完本课程后,您将能够: 理解高可用架构的含义并掌握基本实现方法 理解弹性公网IP的概念、功能以及应用场景 理解负载均衡的概念、功能以及应用场景 掌握网站高并发时如何处理的基本思路 完成多台Web服务器的负载均衡,从而实现高可用、高并发流量架构
目录
相关文章
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
72 0
|
7月前
|
运维 Linux 数据安全/隐私保护
linux配置SVN,添加用户,配置用户组的各个权限教程
linux配置SVN,添加用户,配置用户组的各个权限教程
|
4月前
|
算法 程序员 Apache
Windows下搭建SVN服务器并配置eclipse和idea
Windows下搭建SVN服务器并配置eclipse和idea
57 1
|
4月前
|
小程序 Linux Shell
SVN配置服务器自动更新
使用svn做版本控制服务器,其实还是比较方便的,不管是从搭建还是配置上,相对于git,都要简单很多。 Linux如何搭建SVN服务器,请移步《Centos7安装SVN》
51 0
|
10月前
|
Java 开发工具 Android开发
Android studio配置svn及使用方法
Android studio配置svn及使用方法
|
10月前
|
Linux Windows
svn 钩子 hooks 的 pre-commit 配置递交文件格式,文件大小,备注必填
svn 钩子 hooks 的 pre-commit 配置递交文件格式,文件大小,备注必填
|
网络协议 Linux 网络安全
SVN CentOS7 下配置svn的安装及基础配置介绍
SVN CentOS7 下配置svn的安装及基础配置介绍
449 0
|
数据安全/隐私保护
如何配置SVN的服务器端和客户端(二)
3.客户端(tortoisesvn)的配置 1.双击安装包,然后点击下一步 在这里插入图片描述 2.直接点下一步 在这里插入图片描述 3.点击install,进行安装 在这里插入图片描述 4.安装结束后,点击finish 在这里插入图片描述 5.安装汉化语言包,双击安装包,然后点击next 在这里插入图片描述 7.安装结束后配置语言,桌面空白位置右键点击,找到tortoisesvn,选择setting,如下图,语言修改为中文 在这里插入图片描述 8.汉化完之后,在桌面空白位置右键单击选择检出,可以修检出的路径,修改路径后点击确定可能会出现下面的警告框,选择永久接受即可 在这里插入图片描述 9
如何配置SVN的服务器端和客户端(二)
如何配置SVN的服务器端和客户端(一)
如何配置SVN的服务器端和客户端 好些小伙伴儿在开发的时候都会遇到一个比较麻烦的事情,那就是自己开发的东西不太会整理,或者是团队一起开发,有一些东西不太好整合到一起,那这个时候你们就需要一个版本控制(管理)工具了,当然现在程序用到比较多的是GitHub和国内的码云。但是有一个团队协作也很好用的工具叫SVN,SVN是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。今天来和大家说一下怎样配置SVN的服务器和客户端。 1.下载SVN服务器端和客户端安装包 服务器端下载地址:https://www.visu
如何配置SVN的服务器端和客户端(一)
|
数据安全/隐私保护
Phpstorm配置svn
Phpstorm配置svn
222 0
Phpstorm配置svn