环境说明

系统版本     CentOS 7.2 x86_64

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。

svnserve是SVN自带的一个轻型服务器,客户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问SVN版本库。svnserve可以通过配置文件来设置用户和口令,以及按路径控制版本库访问权限。本文详细分析了svnserve配置文件格式,并说明如何使用配置文件控制版本库访问权限

svn的版本管理其最大的特点就是集中式,所有的项目代码文件都放在svn服务器上,客户端并不具有全部项目代码文件,因此对svn服务器的设备要求较高

1、服务端安装配置

[root@svn-server ~]# yum install -y subversion

[root@svn-server ~]# mkdir -p /application/svndata            #创建svn的版本库的根目录

[root@svn-server ~]# mkdir -p /application/svnpasswd        #创建svn的密码权限目录

[root@svn-server ~]# svnserve -d -r /application/svndata        #启动,指定svn的根目录(-d: 后台运行,-r:路径)

[root@svn-server ~]# netstat -lntup|grep 3690

tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2231/svnserve

建立版本库(也可以理解为是一个项目,这个目录不能用mkdir来创建,因为svn有自己运行方式,会创立属于svn自己很多的文件)

[root@svn-server ~]# svnadmin create /application/svndata/sadoc

修改配置文件

[root@svn-server ~]# cd /application/svndata/sadoc/conf/

[root@svn-server conf]# cp svnserve.conf svnserve.conf.bak

[root@svn-server conf]# vim svnserve.conf

[general]

anon-access=none     #控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。

即"write"为可读可写,"read"为只读,"none"表示无访问权限。

缺省值:read

auth-access=write     #控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。

即"write"为可读可写,"read"为只读,"none"表示无访问权限。

缺省值:write

password-db = passwd     #指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf

目录的相对路径。

缺省值:passwd

authz-db = authz         #指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

除非指定绝对路径,否则文件位置为相对conf目录的相对路径。

缺省值:authz

realm= My First Repository        #指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的

认证域相同,建议使用相同的用户名口令数据文件。

缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)

[root@svn-server conf]# pwd

/application/svndata/sadoc/conf

[root@svn-server conf]# chmod 700 *        #修改权限(原来的权限为644,任何人都可以看到, svn的密码是明文的)

[root@svn-server conf]# vim passwd        #末行添加以下用户

[users]

test1 = 1111

test2 = 2222

test3 = 3333

用户名口令文件由svnserve.conf的配置项password-db指定,缺省为conf目录中的passwd。该文件仅由一个[users]配置段组成。

[users]配置段的配置行格式如下:

<用户名> = <口令>

注意:配置行中的口令为未经过任何处理的明文

[root@svn-server conf]# vim authz

dev = test1,test2    #定义组名和组成员(在passwd里定义的)

ops = test3        #定义组名和组成员

[sadoc:/]        #定义项目额权限: 项目名称sadoc,表示该项目下所有内容允许谁可以有什么权限

@dev = rw        #允许某个组dev来访问,则前面要加@这个符号来标识下

@ops = r            #允许ops组来查看

test3 = r        #允许用户test3来查看

权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。

[groups]配置段中配置行格式如下:

<用户组> = <用户列表>

用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"(如:引用用户组"all"要使用字符串"@all")。

版本库路径权限段的段名格式如下:

[<版本库名>:<路径>]

如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。

可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为"[/tmp]"的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录"/tmp"的访问权限。

版本库路径权限段中配置行格式有如下三种:

<用户名> = <权限>

<用户组> = <权限>

* = <权限>

其中,"*"表示任何用户;权限的取值范围为''、'r'和'rw',''表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。

注意:每行配置只能配置单个用户或用户组。

配置文件保存后就立即生效,重启或者不重启svnserve服务都可以

[root@svn-server conf]# pkill svnserve

[root@svn-server conf]# svnserve -d -r /application/svndata        #重新启动svn

[root@svn-server conf]# netstat -lntup|grep 3690

tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2309/svnserve

启动到svndata这个目录,所以在客户端访问的URL中末尾续接上/sadoc,假如只有1个项目时,就可以 svnserve .../application/svndata/sadoc,直接输入地址svn://xxx.xxx.xxx.xxx即可访问

[root@svn-server conf]# vim /etc/rc.d/rc.local        #将svn加入到开机启动

/usr/bin/svnserve    -d -r /application/svndata

SVN配置详细信息参考:https://blog.csdn.net/thinkerabc/article/details/1831025

2、客户端配置和使用

2.1 Linux客户端使用svn

[root@svn-client ~]# yum install -y subversion

基本操作:

[root@svn-client ~]# svn checkout svn://10.0.0.10/sadoc    #导出

认证领域: <svn://10.0.0.10:3690> My First Repository

"root"的密码:

认证领域: <svn://10.0.0.10:3690> My First Repository

用户名: test1

"test1"的密码:

-----------------------------------------------------------------------

注意! 你的密码,对于认证域:

<svn://10.0.0.10:3690> My First Repository

只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在"/root/.subversion/servers"中设置选项"store-plaintext-passwords"为"yes"或"no",

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?yes

A sadoc/.bash_logout

A sadoc/.tcshrc

A sadoc/.viminfo

A sadoc/.bash_profile

A sadoc/.bash_history

A sadoc/.subversion

A sadoc/.subversion/servers

A sadoc/.subversion/README.txt

A sadoc/.subversion/auth

A sadoc/.subversion/auth/svn.username

A sadoc/.subversion/auth/svn.ssl.client-passphrase

A sadoc/.subversion/auth/svn.ssl.server

A sadoc/.subversion/auth/svn.simple

A sadoc/.subversion/auth/svn.simple/02f30398314dca65b675ce5570f28e52

A sadoc/.subversion/config

A sadoc/anaconda-ks.cfg

A sadoc/.bashrc

A sadoc/.cshrc

取出版本 1。

[root@svn-client ~]# svn import /service/tools/jeesns.jsp svn://10.0.0.10/sadoc -m "version1"    #导入某个代码文件

[root@svn-client ~]# svn ls svn://10.0.0.10/sadoc        #查看svn中的数据

附:常用命令(参考自https://blog.csdn.net/liuchong_lch/article/details/78192755)

1、将文件checkout到本地

svn checkout path(path是服务器的目录)

例如 :svn checkout svn://192.168.1.1/pro/domain

2、往版本库中添加新的文件

svn add filename

例如:svn add test.cpp

3、将改动的文件提交到版本库

svn commit -m "注释" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)

例如:svn commit -m "注释" test.cpp

简写:svn ci

4、加锁/解锁

svn lock -m "注释" path

例如: svn lock -m "注释" test.cpp

svn unlock path

5、更新到某个版本

svn update -r 版本号 path

svn update 更新当前目录以及子目录下的所有文件到最新版本

svn upate -r 200 test.cpp 将版本库中的test.cpp还原到版本200

简写 svn up

6、查看文件或者目录状态

(1)svn status path (显示目录下的文件和子目录下的文件状态,正常状态不显示)

【?:不在svn控制中;M:内容被修改;C:发生冲突;A:预定义加入到版本库;K:被锁定】

(2)svn status -v path (显示文件和子目录状态)

注意:svn status、svn diff和svn revert这三条命令在没有网络情况下可以执行,因为svn在本地.svn中保留了本地版本原始拷贝。

简写: svn st

7、删除文件

svn delete path -m "注释"

例如: svn delete svn://192.168.1.1/pro/domain/test.cpp -m "delete test file"

或者直接svn delete test.php 然后再svn ci -m 'delete test file',推荐使用这种

简写: svn (del、remove、rm)

8、查看日志

svn log path

9、查看文件详细信息

svn info path

10、比较差异

svn diff path(将修改的文件与基础版本比较)

svn diff -r m:n (将修改的文件m版本和n版本比较)

简写 svn di

11、将两个版本的文件的差异合并到当前文件

svn merge -r m:n path

例如:svn

merge -r 20:25 test.cpp(将版本20与25之间的差异合并到当前文件,但一般会发生冲突,需要处理一下)

12、SVN帮助

svn help

以上为常用命令,下面为不常用命令

13、查看版本库下的文件和列表

svn list path (显示path目录下的所属于版本的文件和目录)

简写: svn ls

14、创建纳入版本控制下的新目录

svn mkdir: 创建纳入版本控制下的新目录。

用法: 1、mkdir PATH...

2、mkdir URL...

创建版本控制的目录。

1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。

2、每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改

svn revert:恢复原始未改变的工作副本文件(恢复大部分的本地修改)revert用法:revert path

注意:本子命令不会存储网络,并且会解除冲突的情况。但它不会恢复被创建的目录

16、代码库URL变更

svn switch(sw): 更新工作副本到不同的URL。

用法

1、switch URL [PATH]

2、switch --relocate FROM TO [PATH]

1、更新工作副本,映射到一个新的URL,会将服务上的文件与本地文件合并。这是将工作副本对应到同一创库的某个分支或者标记的方法。

2、改写工作副本URL元数据,以反映URL的变更,创库URL变动但工作副本仍旧对映同一创库的同一目录时使用该命令更新工作副本与创库的对应关系。

17、解决冲突

svn resolved:移除工作副本的目录或文件的"冲突"状态。

用法 resolved path

注意:本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让path可以再次提交。

18、输出指定文件的URL内容

svn cat 目标[@版本] 如果指定了版本将从指定的版本开始查找。

2.2 windows客户端使用svn

下载TortoiseSVN客户端,下载地址https://tortoisesvn.net/downloads.html,这个地址也提供了语言包的下载,选择需要下载的语言包,在安装完TortoiseSVN后安装语言包即可,图形界面使用简单使用指南,这里不想多说,可以参考https://blog.csdn.net/maplejaw_/article/details/52874348

转载于:https://www.cnblogs.com/ssgeek/p/9321447.html

SVN服务的部署及使用相关推荐

  1. centos7下svnserve方式部署subversion/SVN服务端(实操)

    一般来说,subversion服务器可以用两种方式架设: 一种是基于svnserve,svnserve作为服务端: 一种是基于Apache,用apache作为服务端. 这里采用第一种方式部署. 执行如 ...

  2. 《一、企业级SVN运维实战:SVN服务部署》

    文章目录 一.SVN部署背景 二.SVN服务部署 2.1.部署环境 2.2.系统环境 2.3.软件安装 2.3.配置文件 2.4.数据迁移 2.5.测试访问

  3. linux怎么监控守护进程,linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

  4. SVN 服务端 和 客户端(转)

    转自 http://www.cnblogs.com/Leo_wl/p/3454974.html SVN 服务端 和 客户端 [企业化NET]Window Server 2008 R2[3]-SVN 服 ...

  5. 《三、企业级SVN运维实战:SVN服务配置https访问》

    文章目录 一.svn服务部署 二.安装httpd及svn模块 三.svn http配置 四.创建svn http用户 五.修改svn仓库配置文件 六.配置https请求svn 七.svn测试 总结:整 ...

  6. 为svn服务增加自助修改密码功能

    为svn服务增加自助修改密码功能   在维护svn服务的过程中,为用户创建了帐号密码,因svn服务原本没有提供修改密码的功能,所以用户如果觉得自己的密码不合适,要修改,则必须通过svn管理员进行修改. ...

  7. linux 安装svn服务端并配置

    我的系统环境是centOS7.这里使用yum安装方式.优点:简单,一键安装,不用手动配置环境变量等.缺点:安装位置为yum默认. 一.yum安装subversion     1. 安装subversi ...

  8. [转] 大规模服务设计部署经验谈

    大规模服务设计部署经验谈 本文中提出的最佳实践,来自于作者多年大规模服务设计和部署的经验,为设计.开发对运营友好的服务提供了一系列良好的解决方案. ■ 文/James Hamilton 译/赖翥翔 1 ...

  9. Vsftpd 服务的部署及优化

    Vsftpd 服务的部署及优化 1 实验环境 2 ftp介绍 3 vsftpd安装与启用 4 vsftpd基本信息 5 用户访问控制 5.1 匿名用户访问 5.2 本地用户访问 6 虚拟用户访问 6. ...

最新文章

  1. OpenNESS 的 5GC 融合实践
  2. python毕业设计论文-25 行 Python 代码毕业设计实现人脸识别
  3. 关于界面软件测试点,电子商务网站--界面测试的测试点
  4. Leet Code OJ 226. Invert Binary Tree [Difficulty: Easy]
  5. python中configparser详解_Python中的ConfigParser模块使用详解
  6. CSS可以实现可视化设计吗?要如何实现?
  7. 集成druid实现数据库密码加密功能
  8. BZOJ 1066[SCOI2007]蜥蜴
  9. bugfree如何修改Bug7种解决方案的标注方法 .
  10. 书荒季 | “超长待机”的假期,收好这份信息安全书单!
  11. elasticsearch 支持拼音检索
  12. devil may cry 4 android apk,Devil May Cry
  13. 鸿蒙os下载到电脑上,华为鸿蒙os系统官网
  14. Opencv3.2各个模块功能详细简介(包括与Opencv2.4的区别)
  15. sk_buff 剖析
  16. 小猪的Python学习之旅 —— 12.Python并发之queue模块
  17. 柳暗花明又一村 WiFi新应用实现3D物体成像
  18. vue中使用element-ui时单元格内换行的问题
  19. unity中的2D虚拟摇杆和3D虚拟摇杆
  20. Extjs中加载异步树的最简单例子实现

热门文章

  1. 【数据蒋堂】第28期:迭代聚合语法
  2. mysql5.5主从同步复制配置
  3. WinForm窗体错误控件
  4. 《101 Windows Phone 7 Apps》读书笔记-ALARM CLOCK
  5. Proftpd(MySQL验证+配额)配置
  6. 通过多组的HSRP实现网络的冗余和负载
  7. 眼睛-摄像 科技-文学
  8. 架构师要了解那些??
  9. linux下java多线程_Linux系统下Java问题排查——cpu使用率过高或多线程锁问题
  10. airtest远程连接手机_远程连接路由器图文教程,查询无线wifi连接手机dhcp设备名列表...