Linux搭建SVN服务器详细教程
前言
本文讲解Linux系统下如何搭建SVN服务器,详细说明各配置项的功能,最终实现可管控多个项目的复杂配置。

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,实现最终集中式的管理。
目前很多互联网公司在使用SVN,优点在于使用方便、易于管理。与之对应的分布式的版本控制系统Git则更加灵活。
搭建
安装SVN
//Ubuntu
apt-get install subversion
//Centos
yum install subversion
查看是否安装成功,可以查看版本。
svnserve --version

提示版本1.13.0,说明已安装成功。
创建版本库目录
创建SVN版本库目录,为后面创建版本库提供存放位置,也是最后启动SVN服务的根目录。
我们在/usr路径下创建svn目录作为版本库目录。
cd /usr
mkdir svn
Linux系统各目录知识延伸:
所以,将SVN库存放在用户文件目录/usr下比较合理。
创建SVN版本库
在上一步建立路径基础上,创建版本库,如dev。
cd /usr/svn
svnadmin create dev
创建成功后,可以查看到dev目录下生成的文件。

修改SVN配置
进入conf目录,查看需要修改的配置文件。
cd /usr/svn/dev/conf
ls

配置文件:
- authz:权限配置文件,控制读写权限
- passwd:账号密码配置文件
- svnserve.conf:svn服务器配置文件
修改svnserve.conf文件
vim svnserve.conf

去掉anon-access、auth-access、password-db、authz-db、realm几项前的注释符号“#”。
配置项含义:
- anon-access = none|read|write 决定非授权用户的访问级别。none 表示无访问权限,read 表示只读,write 表示可读可写,默认为 read。
- auth-access = none|read|write 决定授权用户的访问级别,使用与上面相同的访问级别。默认为 write。
- password-db = filename 指定账号密码数据库文件名。filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为passwd。
- authz-db = filename 指定权限配置文件名,filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为authz。
- realm = realm-name 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的账号密码数据库文件passwd。
认证域知识延伸:
在SVN客户端登录时,会提示realm认证域,如下图的认证域
My First Repository。
修改passwd文件
vim passwd

只需在末尾添加账号和密码,格式 账号 = 密码,如user1 = 123456,可添加多个。
修改authz文件
vim authz
在根目录下设置user1、user2读写权限:

如果用户比较多,可以使用groups形式设置分组team1,并在根目录下指定分组@team1的权限:

如果想设置其他用户的权限,可以通过*设置,如设置除@team1分组外其他用户只读权限:
[/]
@team1 = rw
* = r
启动SVN服务
执行SVN启动命令,其中参数-d表示以守护进程的方式启动, -r表示设置的根目录。
svnserve -d -r /usr/svn/
关闭svn命令:
killall svnserve
本地访问SVN服务
在windows系统中,安装TortoiseSVN软件,创建一个本地目录,右键选择SVN Checkout测试下,URL填写svn://IP/dev,dev替换成你创建的版本库名称。

输入passwd配置好的用户。

Checkout completed,SVN访问成功,这就Nice了~

扩展
设置查看log日志
想查看提交的svn log日志,需要进一步配置。
编辑svnserve.conf,设置:
anon-access = none
编辑authz文件中添加:
[/]
* =
这样通过鼠标右键TortoiseSVN->show log就可以查看svn提交的历史记录了。
多个项目管控配置
SVN配置文件是很灵活的,如果想使用统一的账户和权限去管控多个项目,可以将多个项目的authz和passwd文件统一放在一处,在多个项目的svnserve.conf文件中配置这两个文件的绝对路径,并在authz中对不同的项目设置用户访问权限。
如:a、b、c、d这4个用户,p1、p2两个项目,其中a、b只能访问p1,c、d只能访问p2。
创建版本库目录
mkdir /usr/svn
创建多个版本库
cd /usr/svn
svnadmin create p1
svnadmin create p2
创建管理用户权限目录
mkdir /var/svn/conf
cd /p1/conf
cp authz passwd /var/svn/conf
修改配置文件
修改p1的svnserve.conf文件:
anon-access = none
auth-access = write
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm = p1
修改p2的svnserve.conf文件:
anon-access = none
auth-access = write
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm = p2
password-db和authz-db都使用统一管理用户权限目录,使用绝对路径。
修改password-db文件
[users]
a = 123
b = 123
c = 123
d = 123
修改authz文件
[groups] //分组
p1user = a,b
p2user = c,d
[/]
* = #以上没有定义的用户都没有任何权限
[p1:/] //p1的访问控制,c、d无法访问
@p1user = rw
[p2:/] //p2的访问控制,a、b无法访问
@p2user = rw
对password-db和authz文件的修改立即生效,不必重启svn。
启动svn服务
svnserve -d -r /usr/svn/
访问不同项目SVN
同样TortoiseSVN软件,选择SVN Checkout测试。
访问项目p1 URL
svn://IP/p1
访问项目p2 URL
svn://IP/p1
统一的配置文件,不同项目限定了不同用户访问,这样就实现了管控多个项目的SVN配置。
以上就是Linux系统搭建SVN服务器详细教程的所有内容,希望对大家有所帮助。
你学“废”了么?
文章首发于我的博客 https://echeverra.cn/svnserve,原创文章,转载请注明出处。
欢迎关注我的微信公众号 echeverra,一起学习进步!不定时会有资源和福利相送哦!
Linux搭建SVN服务器详细教程的更多相关文章
- 搭建SVN服务器详细教程
搭建SVN服务器详细教程 本教程会从最基本的下载安装到上传代码,下载代码这条线来详细讲述如何完成SVN服务器的搭建 下载并安装VisualSVN server 下载并安装TortoiseSVN 导入项 ...
- 原 Linux搭建SVN 服务器2
原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55) 阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏 赞3 摘要 Linux搭建SVN 服务器 目录 ...
- 原 Linux搭建SVN 服务器
原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55) 阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏 赞3 摘要 Linux搭建SVN 服务器 目录 ...
- Linux搭建SVN 服务器
Linux搭建SVN 服务器 1 安装SVN 2 使用客户端连接 2.1 使用windows的客户端 2.2 使用Linux下的命令行 3 ...
- Linux搭建SVN 服务器(转)
转自:http://my.oschina.net/lionel45/blog/298305 Linux搭建SVN 服务器 作者: 沈小然 日期:2014年 8月 5日 1 安装 ...
- Linux搭建SVN服务器(服务端)
Linux搭建SVN服务器(服务端) 1 安装SVN SVN客户端:TortoiseSVN,官网下载:https://tortoisesvn.net/downloads.html(客户端) # yum ...
- CentOS Linux搭建SVN服务器
Linux系统:CentOS 安装步骤如下: 1.yum install subversion 2.输入rpm -ql subversion查看安装位置,如下图: 可以看到 svn在bin目录下生成了 ...
- Linux 搭建SVN 服务器(转)
一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...
- Linux 搭建SVN 服务器
一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...
随机推荐
- MySQL——优化
MySQL数据库优化: 1.优化角度 安全: 数据可持续性 性能: 数据的高性能访问 2.优化范围(优化顺序---->) (1)存储.主机和操作系统: 主机架构稳定性 I/O规划及配置 swap ...
- 「山东省队集训2021 Round 1」 半夜
考虑将 \(X\) 复制一次放到后面再对其长度为 \(n\) 的连续子串和 \(Y\) 求一波 \(\rm{Longest\ Common\ Subsequence}\) 就能得到 \(\Theta( ...
- Linux内核中的Workqueue机制分析
1. 什么是workqueue Linux中的workqueue(工作队列)主要是为了简化在内核创建线程而设计的.通过相应的工作队列接口,可以使开发人员只关心与特定功能相关的处理流程,而不必关心内核线 ...
- Identity角色管理四(删除角色)
角色删除方法 [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Delete(string id) ...
- C# AutoMaper简单使用
AutoMapper它是一种对象与对象之间的映射器,让AutoMapper有意思的就是在于它提供了一些将类型A映射到类型B这种无聊的实例,只要B遵循AutoMapper已经建立的惯例,那么大多数情况下 ...
- http接口实现附件对接
1.推送附件 filebody /** * 推送附件方法 * @param args */ public static void main2(String[] args){ CloseableHttp ...
- Java日期时间API系列42-----一种高效的中文日期格式化和解析方法
中文日期(2021年09月11日 和 二〇二一年九月十一日 )在生活中经常用到,2021年09月11日很好处理直接使用模板:yyyy年MM月dd日:二〇二一年九月十一日比较不好处理,需要每个数字进行转 ...
- yield实现 coroutine协程案例
yield可以手工实现协程,但python为我们封装了一个greenlet,先看看yield实现,yield需要手工操作,无法实现IO操作时自动切换协程,greenlet是封装好的,能方便使用io切换 ...
- Alibaba《Java开发手册》之Java代码规范笔记
前言 一种工具被发明出来,那么针对这种工具的各种使用规则.条条框框就随之而来.无规矩不成方圆,无制度则无国家,无风格不成代码!治国有国法.排兵布阵有章法.那么写代码也有它界内通用的不成俗的约定.最近刚 ...
- 学习Tomcat(三)之容器连接器
Tomcat最底层使用的是Java标准的SocketServer和Socket接受和处理请求,但是Socket接受到的数据是网络运输层的TCP或UDP协议的数据,需要转为Http或者其它应用层协议的数 ...
