svn版本控制系统有很多用途,最近公司使用它加脚本实现产品补丁小更新(因为如果每次都大更新的话,每次都要重新打rpm包,更新yum源等,很麻烦)。

一、服务器端安装

1、安装svn

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

2、新建svn目录

1
[root@svn ~]#mkdir -p /root/svn/svnserver

3、启动svn服务

1
[root@svn ~]#svnserve -d -r /root/svn/svnserver/

如果有这个报错:svnserve: error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory

解决办法:

(1)找到这个文件所在目录

1
2
[root@svn ~]#find / -name "libaprutil-1.so.0"
/usr/local/xxx/service/apache/lib/libaprutil-1.so.0

(2)查看共享库配置文件

1
2
[root@svn ~]#more /etc/ld.so.conf
include ld.so.conf.d/*.conf

(3)添加共享库,并更新共享库

1
2
3
[root@svn ~]#vi /etc/ld.so.conf.d/httpd-apr.conf
/usr/local/xxx/service/apache/lib/
[root@svn ~]#ldconfig -v

4、启动svn

1
2
[root@svn ~]#svn --version
[root@svn ~]#svnserve -d -r /root/svn/svnserver/

备注:如果要更改端口启动的时候接上“--listen-port”新端口。

5、创建版本库

1
[root@svn ~]#svnadmin create /root/svn/svnserver/patch

6、修改svnserve.conf配置文件,在[general]下方加入这四行

1
2
3
4
5
6
[root@svn ~]#vim /root/svn/svnserver/patch/conf/svnserve.conf
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = patch

备注:realm 这行也可以不加。

7、创建svn用户和权限分配

在 /root/svn/svnserver/patch/conf目录下,有两个文件是配置用户账号密码和用户权限的。

1
2
3
4
5
6
7
8
passwd 此文件配置用户账号和密码
[root@svn ~]#vim /root/svn/svnserver/patch/conf/passwd 
[users]
# harry = harryssecret
# sally = sallyssecret
xxx = 123456
zhangsan = 123456
lisi = 123456

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
authz 此文件配置用户权限
[root@svn ~]#vim /root/svn/svnserver/patch/conf/authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = xxx
user = xxx,zhangsan,lisi
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
@admin = rw
@user = rw

备注:authz这个文件详细控制权限,请见最后的备注。

8、设置iptables防火墙允许3690端口,或者关闭防火墙

9、 编写启动脚本

1
2
3
4
5
[root@svn ~]#vi /etc/init.d/server_init
#!/bin/bash
#chkconfig: 345 90 90
#description: server_init for patch.
svnserve -d -r /root/svn/svnserver/

10、 启动脚本放入/etc/init.d/目录下,并设置开机启动

1
2
3
[root@svn ~]#chkconfig --add server_init
[root@svn ~]#chkconfig server_init on
[root@svn  ~]#chmod 755 server_init

备注:如果要杀掉svnserver,用killall svnserver,然后svnserve -d -r /root/svn/svnserver/启动。

二、windows客户端安装

1、下载TortoiseSVN客户端

http://sw.bos.baidu.com/sw-search-sp/software/b2ea78514e765/TortoiseSVN-1.9.7.27907-x64.msi

2、右键点击桌面上空白区域,然后会发现右键的菜单中多了“SVN Checkout...”工具栏,点击。

3、填入服务器版本库的路径,和本地存放版本库文件的目录,这里本地C盘新建一个patch目录,会提示输入密码,并下载更新。

4、更新并提交2个文件,如下图:

如果要提交某一个文件,可以选中这个文件,然后右键选择TortoiseSVN---Add添加,提交的时候最好写上备注:

5、清除登录帐号和密码信息,然后用另外一个帐号登录(本地C盘新建一个test2目录)

备注:我这里只是举例,实际情况下是让另外一个人在其他电脑上登录另外一个帐号,验证相互提交的数据是否能同步。

如上图,表示同步成功。


三、linux客户端安装

1、安装svn

[root@svnclient ~]#yum install -y subversion

2、查看svn版本或帮助。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@svnclient ~]#svn --version
[root@svnclient ~]#svn help
[root@svnclient ~]#svn checkout --help
[root@svnclient ~]#svn list --help
如果有这个报错:svnserve: error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory
解决办法:
(1)找到这个文件所在目录
[root@svn ~]#find / -name "libaprutil-1.so.0"
/usr/local/xxx/service/apache/lib/libaprutil-1.so.0
(2)查看共享库配置文件
[root@svn ~]#more /etc/ld.so.conf
include ld.so.conf.d/*.conf
(3)添加共享库,并更新共享库
[root@svnclient ~]#vi /etc/ld.so.conf.d/httpd-apr.conf
/usr/local/xxx/service/apache/lib/
[root@svnclient ~]#ldconfig -v

3、svn list列出版本库文件,刚开始会提示输入root密码,直接回车,然后就可以输入您定义的用户和密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@svnclient ~]#svn list svn://192.168.0.181/patch
认证领域: <svn://192.168.0.181:3690> patch
“root”的密码: 
认证领域: <svn://192.168.0.181:3690> patch
“lisi”的密码: 
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:
   <svn://192.168.0.181:3690> patch
只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
fsdfsd/
新建文本文档 (3).txt
新建文本文档 (4).txt

4、svn checkout检出,由于之前保存了密码,所以这步步会提示输入密码。(先新建一个本地目录,比如/svndata)

备注:接用户名加这个,--username 用户名

1
2
3
4
5
6
[root@svnclient ~]#svn checkout svn://192.168.0.181/patch /svndata
A    /svndata/新建文本文档 (3).txt
A    /svndata/新建文本文档 (4).txt
A    /svndata/fsdfsd
A    /svndata/fsdfsd/sdfsdf.txt
取出版本 2。

5、更新版本库到本地

1
2
[root@svnclient svndata]#svn update
[root@svnclient svndata]#svn update -r 修正版本 文件名   #将某个文件还原到某个版本

6、修改后提交到库

1
2
3
4
5
6
[root@svnclient svndata]# svn add linuxfile 
A         linuxfile
[root@svnclient svndata]# svn commit -m "20171223" linuxfile 
增加           linuxfile
传输文件数据.
提交后的版本为 3。

以下这些复制网友的:

7、删除文件

1
2
3
svn delete svn://路径(目录或文件的全路径) -m “删除备注信息文本”
例子:
svn delete svn://192.168.0.181/patch/linuxfile -m “删除测试文件linuxfile”

8、加锁/解锁

1
2
3
例子:
svn lock -m “锁信测试用linuxfile文件“ linuxfile 
svn unlock linuxfile

9、比较差异

1
2
3
4
5
svn diff 文件名 
svn diff -r 修正版本号m:修正版本号n 文件名
例子:
svn diff linuxfile<- 将修改的文件与基础版本比较
svn diff -r 200:201 linuxfile<- 对 修正版本号200 和 修正版本号201 比较差异

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

1
2
3
4
5
6
7
8
9
10
svn st 目录路径/名
svn status 目录路径/名<- 目录下的文件和子目录的状态,正常状态不显示 
             【?:不在svn的控制中;  M:内容被修改;C:发生冲突;
              A:预定加入到版本库;K:被锁定】 
svn  -v 目录路径/名
svn status -v 目录路径/名<- 显示文件和子目录状态
              【第一列保持相同,第二列显示工作版本号,
               第三和第四列显示最后一次修改的版本号和修改人】 
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,
  原因是svn在本地的.svn中保留了本地版本的原始拷贝。

11、查看日志

1
2
3
svn log 文件名
例子:
svn log linuxfile<- 显示这个文件的所有修改记录,及其版本号的变化

12、查看文件详细信息

1
2
3
svn info 文件名
例子:
svn info linuxfile

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
svn mkdir 目录名
svn mkdir -m "新增目录备注文本" http://目录全路径
例子:
svn mkdir newdir
svn mkdir -m "Making a new dir." svn://localhost/test/newdir 
注:添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”
svn update
注:如果手工在checkout出来的目录里创建了一个新文件夹newsubdir,
  再用svn mkdir newsubdir命令后,SVN会提示:
  svn: 尝试用 “svn add”或 “svn add --non-recursive”代替?
  svn: 无法创建目录“hello”: 文件已经存在
  此时,用如下命令解决:
  svn add --non-recursive newsubdir
  在进入这个newsubdir文件夹,用ls -a查看它下面的全部目录与文件,会发现多了:.svn目录
  再用 svn mkdir -m "添hello功能模块文件" svn://localhost/test/newdir/newsubdir 命令,
  SVN提示:
  svn: File already exists: filesystem '/data/svnroot/test/db', transaction '4541-1',
  path '/newdir/newsubdir '

14、恢复本地修改

1
2
3
4
5
svn revert [--recursive] 文件名
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录。
例子:
svn revert foo.c <- 丢弃对一个文件的修改
svn revert --recursive . <-恢复一整个目录的文件,. 为当前目录

15、把工作拷贝更新到别的URL

1
2
3
svn switch http://目录全路径 本地目录全路径
例子:
svn switch http://localhost/test/456 . <- (原为123的分支)当前所在目录分支到localhost/test/456

16、解决冲突

1
2
3
4
5
6
7
8
9
10
11
12
13
svn resolved [本地目录全路径]
例子:
$ svn update
C foo.c
Updated to revision 31.
如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:
ls
foo.c
foo.c.mine
foo.c.r30
foo.c.r31
当你解决了foo.c的冲突,并且准备提交,运行svn resolved让你的工作拷贝知道你已经完成了所有事情。
你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。

17、不checkout而查看输出特定文件或URL的内容

1
2
3
4
svn cat http://文件全路径
例子:
svn cat 
http://localhost/test/readme.txt

18、新建一个分支copy

1
svn copy branchA branchB  -m "make B branch" // 从branchA拷贝出一个新分支branchB

19、合并内容到分支merge

1
svn merge branchA branchB  // 把对branchA的修改合并到分支branchB

疑问:

或许有很多人会以为这些文件会以文件方式存储在服务器上,其实不是。

上传的文件放在SVN服务器的哪个目录下,SVN服务器版本库有两种格式。一种为FSFS,一种为BDB。
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息


备注:

这是一个权限实例需求,如果需要对权限精确控制,请参考这个。

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

策划组:开策划、美术读写

后端组:开后端读写,策划只读

前端组:开前端读写,策划、美术只读

美术组:开美术读写,策划只读

管理员组:所有的读写

authz:用户权限配置

示例:

[groups]

#管理组

manager = boss

#服务端用户组

server = server1,server2

#客户端用户组

client = client1,client2

#美术组

art = art1,art2

#策划组

design=design1,design2

[game:/]

@manager=rw

[game:/server]

@server=rw

[game:/client]

@client=rw

@design=r

@art=r

[game:/art]

@design=rw

@art=rw

@client=r

[game:/design]

@design=rw

@server=r

@client=r

@art=r

passwd:用户密码

[users]

boss=123456

server1=123456

server2=123456

client1=123456

client2=123456

art1=123456

art2=123456

design1=123456

design2=123456





本文转自 sailikung 51CTO博客,原文链接:http://blog.51cto.com/net881004/2053759,如需转载请自行联系原作者

centos 6.9部署svn服务器和客户端(客户端含windows、linux版本)相关推荐

  1. Linux Centos6.5 SVN服务器搭建 以及客户端安装

    转载:http://www.cnblogs.com/mymelon/p/5483215.html /******开始*********/ 系统环境:Centos 6.5 第一步:通过yum命令安装sv ...

  2. yum centos 7.4 安装svn服务器

    1.查看linux版本   cat /etc/redhat-release 查看CentOS版本     cat /proc/version 可以看出centos是7.4的,linux为64位的 2. ...

  3. 阿里云部署SVN服务器

    1.前提条件 已在实例安全组的入方向添加规则并放行SVN服务的默认端口3690. 步骤一:安装SVN 通过密码认证登录Linux实例. 运行以下命令安装SVN.(也可以用yum) 更新软件源 sudo ...

  4. linux svn服务器搭建、客户端操作、备份与恢复

    Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据.这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到 ...

  5. SVN服务器搭建、客户端安装超详细图解教程

    目录 一.安装包下载 1.下载 TortoiseSVN 服务器安装包 2.下载 TortoiseSVN 客户端安装包 二.详细安装过程图解 1.TortoiseSVN 服务器安装 2.Tortoise ...

  6. 虚拟机搭建svn服务器,轻松搭建一台Windows SVN服务器

    说明 :如果文章图片不能查看,请进入个人blog的主页查看:http://www.msits.com 通常的SVN服务器是搭建在Linux等系统下,例如用Apache+SVN配置,Linux下的SVN ...

  7. svn服务器如何查询文档,windows 查看svn服务器

    windows 查看svn服务器 内容精选 换一换 保证源端与目的端网络连通,以及华为云上目的端服务器的安全组规则允许Iperf测试端口开放.配置安全组规则的具体方法请参见如何配置目的端服务器安全组规 ...

  8. Centos 6.2部署CSVN服务器

    墨迹两句:前边写了subversion部署,怎么现在又用CSVN呢,原因很简单,懒人一个,你能拿鼠标点点就解决的问题,你会急急忙忙的去登陆服务器,然后配置半天,指不定多了一个点或者其他问题,发现配置没 ...

  9. Centos环境下部署游戏服务器-软件安装

    这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...

  10. CentOS 6.4 搭建SVN服务器

    SVN作为新一代代码版本管理工具,有很多优点,管理方便,逻辑明确,安全性高,代码一致性高.SVN数据存储有两种方式,BDB(事务安全表类型)和FSFS(一种不需要数据库的存储系统),为了避免在服务器连 ...

最新文章

  1. 2020秋季-人工神经网络课程报告
  2. ubuntu安装(owncloud-docker安装)
  3. 怎么查看页面跳转过程_faststonecapture注册码在哪?怎么获取?
  4. 优化 最长上升子序列_LIS - 最长上升子序列 (二分优化)
  5. cf 1511 D. Min Cost String
  6. Linux 监控命令之 netstat
  7. 基于SOA架构集成spring-boot+mybatis+dubbo+Druid+zookeeper
  8. 实例浅析javascript变量作用域
  9. java 常量池是什么_Java常量池理解与总结
  10. android:#FFFFFFFF 颜色码解析
  11. adb 下载文件到本地
  12. 计算机绘图CAD实训指导,【精品】CAD计算机绘图实习指导书
  13. 象棋马走日步数计算流程图
  14. 数字经济赋能实体,Matrix Global Exchange为投资者带来优质项目
  15. 攻防世界crypto新手区writeup
  16. php文字验证码插件,php中文验证码实现方法
  17. 游泳馆管理系统有什么用?能解决什么问题?
  18. 武汉大学计算机技术上机难度,武汉大学计算机技术(专业学位)考研难不难和研究生专业好不好...
  19. 关于mybatis的报错 attempted to return null from a method with a primitive return type (int)
  20. KBQA中用到强化学习的相关论文

热门文章

  1. 服务器怒稳定进不了某个网址,登录服务器的一瞬间,让我感觉自己再也不是“菊外人”...
  2. Linux驱动之TTY(一):概念
  3. 给大家分享一个QQ资料查询接口(等级,活跃,年龄,性别,身份卡)
  4. 第13课:构建神经网络模型的实用建议
  5. fastbin attack
  6. manjaro 安装 tim 后无法输入中文
  7. C语言的奇技淫巧之三
  8. 中关村GHOST WIN7 SP1旗舰版
  9. AutoIt-v3的安装,和robotframework-autoitlibrary的导入
  10. html编辑器怎么设置为excel,excel2013宏编辑器的设置方法教程