Linux搭建SVN服务器详细教程

news2024/12/25 9:01:08

前言

本文讲解 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

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== 编辑

如果用户比较多,可以使用 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 服务器详细教程的所有内容,希望对大家有所帮助。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【转】使用Midjourney绘制小漫画

原帖地址:【Midjourney教程】设计麻瓜也能15分钟一篇小漫画 Midjourney能帮我画漫画,话不多说,下方成品图 Part 1 你想画什么 画漫画当然要有故事情节,你总得确定,你要画个啥?也就是专业人士说的画面分镜,当然咱们是“野狐禅”,就不扯的太细,太细我也不会… 由于只…

软考中级软件评测师备考攻略

软件评测师属于软考中级,考试虽然没有软考高级难度大,但是会比软考初级要难,所以想要通过软件评测师考试还是需要花时间去用心备考的。 一、软件评测师职业前景: 随着互联网技术的不断发展,软件评测师的市场需求也会…

【CocosCreator入门】CocosCreator组件 | Canvas(画布)组件

Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中的Canvas能够将游戏物体渲染到屏幕上。 目录 一、组件介绍 二、渲染模式 三、组件属性 四、组件使用 五、脚本示例 一、组件介绍 Canvas组件是Cocos Creator中重要的组件之一。在…

【Socket】之TCP数据报套接字

1. 介绍下API 1.1 ServerSocket API 这是创建TCP服务端Socket的API。 构造方法方法说明ServerSocket(int port)创建一个服务端流套接字Socket,并绑定到指定端口 普通方法方法说明ServerSocket.accept()开始监听指定端口(创建时绑定的端口&#xff09…

Spring学习——Nginx

Nginx概述 Nginx介绍 Nginx是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网…

Python学习之DateTime

文章目录 前言一、pandas是什么?二、使用步骤1.引入库2.使用date.today()打印日期3.Python当前日期和时间:now() today()总结 4.如何使用 Strftime()格式化日期和时间输出1. 首先,我们将看到一个简单的如何格式化年份的步骤。通过一个例子来理…

【微服务笔记18】微服务组件之Gateway实现服务限流(计数器算法、漏桶算法、令牌桶算法)

这篇文章,主要介绍微服务组件之Gateway实现服务限流(计数器算法、漏桶算法、令牌桶算法)。 目录 一、服务限流 1.1、几种限流算法 (1)计数器算法 (2)漏桶算法 (3)令…

叮咚,你的耳鼻喉专科医院营销策略快来查收

进入后疫情时代以来,人们对健康意识的不断提高,医疗行业也开始卷起来了,通过各种渠道来宣传和推广医院,吸引更多的患者。那么今天就以耳鼻喉专科医院为主,聊聊这类医院该怎么在Z时代做好营销。 医院营销可以分为线上和…

【行为型模式】观察者模式

文章目录 1、概述2、结构3、实现方式3.1、案例引入3.2、结构分析3.3、具体实现 4、观察者模式优缺点5、应用场景 1、概述 观察者模式(Observer)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,其他所有依…

【C++】二叉搜索树的应用

前言 二叉搜索树本质也是二叉树,但因为其数据存储的特殊 — 左子树的值都更小,右子树的值都更大,所以在大部分情况下,查找更为高效。本篇博客将讲述二叉搜索树两个应用搜索的场景 那么话不多说,马上开始今天的学习。 文…

linux运维必了解的日志文件系统

目录 一、inode与block1.1inode和block概述1.1.1inode和block的关系 1.2inode的内容1.2.1inode包含文件的元信息1.2.2linux文件系统的三个时间戳1.2.3目录文件结构 1.3inode的号码1.3.1 硬盘分区后的结构 1.4inode的大小1.5恢复误删除的xfs文件1.6EXT类型文件恢复误删除 二、分…

亿发软件:玩具批发行业需要怎样的进销存开单软件

中国玩具市场的发展潜力十分巨大,近五年来中国玩具行业的批发零售企业都保持着良好的发展态势。近年来,在数字化转型的时代浪潮下,玩具批发零售市场想实现进一步的高质量发展,充分满足客户多元化的供货需求,需要向数据…

Qt5 和 OpenCV4 计算机视觉项目:6~9

原文:Qt 5 and OpenCV 4 Computer Vision Projects 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候&#x…

OpenCV 图像处理学习手册:6~7

原文:Learning Image Processing with OpenCV 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,…

javascript之数组

创建 有以下几种方式 1.构造函数 在使用构造函数时,可以不带new 创建空数组 let color new Array() 或者let color Array() 创建指定个数元素的数组 let color new Array(2) 或者let color Array(2) 创建指定元素的数组 let color new Array("bl…

atio函数和宏offset的介绍

目录 前言atoi函数宏offsetof总结 前言 本章带大家一起认识一些在我们C语言标准库中的函数 atoi函数 int atio(const char* str);头文件&#xff1a; #include<stdlib.h>参数&#xff1a; str指向常量字符串起始位置的指针 函数介绍&#xff1a; ①解析C语言字符串str,…

2023软件测试工程师必备技能?要卷,谁还不会了......

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试岗位是怎…

FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、米联客UDP协议栈4、详细设计方案5、Tri Mode Ethernet MAC的使用6、vivado工程1详解7、vivado工程2详解8、vivado工程3详解9、上板调试验证并演示10、福利&#xff1a;工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下&#x…

Spring Security实战(五)—— 密码加密

一、密码加密的演进 MD5 (Message-Digest Algorithm 5) 和 SHA (Secure Hash Algorithm) 是两种常见的消息摘要算法&#xff0c;它们都被用于加密和数据完整性验证等领域。 MD5 是一种 128 位的哈希函数&#xff0c;常用于数据完整性校验和数字签名等方面。它将任意长度的信息…

WebServer项目(四)->(基于Proactor的c++)Web服务器简介及简单实现

基于Proactor的cWeb服务器项目 WebServer项目(四)-&#xff1e;(基于Proactor的c)Web服务器简介及简单实现1.Web Server&#xff08;网页服务器&#xff09;2.HTTP协议(应用层的协议)3.HTTP 请求报文格式4.HTTP响应报文格式5.HTTP请求方法6.HTTP状态码7.服务器编程基本框架8.两…