SVN在centos上的安装
大多数 GNU/Linux 发行版系统自带了Subversion ,可以用下面命令查看是否有安装
svn --version
如果没有安装,使用命令安装
yum install subversion
SVN启动
首先,在服务端进行SVN版本库的相关配置
创建版本库目录
mkdir /opt/svn
利用svn命令创建版本库
svnadmin create /opt/svn/test
使用命令svnserve启动服务
vnserve -d -r 目录 --listen-port 端口号
-r: 配置方式决定了版本库访问方式。
--listen-port: 指定SVN监听端口,不加此参数,SVN默认监听3690
由于-r 配置方式的不一样,SVN启动就可以有两种不同的访问方式
方式一:-r直接指定到版本库(称之为单库svnserve方式)
svnserve -d -r /opt/svn/ods-sync
在这种情况下,一个svnserve只能为一个版本库工作。
方式二:指定到版本库的上级目录(称之为多库svnserve方式)
svnserve -d -r /opt/svn
这种情况,一个svnserve可以为多个版本库工作
启动svn
svnserve -d -r /opt/svn/test --listen-port 7000
SVN配置
进入/opt/svn/test/conf
目录,修改默认配置文件配置,包括svnserve.conf、passwd、authz 配置相关用户和权限。
svn服务配置文件 ` svnserve.conf `
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
#realm = tiku
anon-access: 控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。默认值:read
auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。默认值:write
authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。默认值:authz
realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。默认值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
用户名口令文件 `passwd`
用户名口令文件由svnserve.conf的配置项password-db指定,默认为conf目录中的passwd。该文件仅由一个[users]配置段组成。
[users]
admin = admin
ods = 123456
配置格式是:<用户名> = <口令>
权限配置文件 `authz`
权限配置文件由svnserve.conf的配置项authz-db指定,默认为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。
[groups]
g_admin = admin,ods
[/]
ods = rw
配置行格式:<用户组> = <用户列表>
版本库路径权限段的段名格式:[<版本库名>:<路径>]
TortoiseSVN 的使用
TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。
下载地址:https://tortoisesvn.net/downloads.html, 页面里有语言包补丁的下载链接。
安装完后,首先在空白处右击,选择检出

然后弹出对话框,输入对应的svn版本库地址,和检出到本地的目录,确定后还需要输入用户和密码

完成后目录下多了.svn
隐藏目录

接下来,在test
目录下新建文件tmp.txt
,并使用svn提交

提交完成后,在版本库浏览器中可以看到新建的文件

在svn服务器上可以用svnlook
命令查看文件的内容
[root@yejf]~# svnlook cat /opt/svn/test tmp.txt
11111
22222#
版本冲突情况处理
更新时提示有版本冲突,会把冲突的版本以及你当前的版本给拉到本地另外文件

tmp.txt
内容
11111
22222
<<<<<<< .mine
44444
||||||| .r4
=======
33333>>>>>>> .r5
tmp.txt.mine
内容
11111
22222
44444
tmp.txt.r4
内容
11111
22222
<<<<<<< .mine
44444
||||||| .r4
=======
33333>>>>>>> .r5
tmp.txt.r5
内容
11111
22222
<<<<<<< .mine
44444
||||||| .r4
=======
33333>>>>>>> .r5
下面我以tmp.txt.mine
当前的版本覆盖到tmp.txt
,然后删除其它3个文件,然后才能提交成功,可以到服务器看到当前版本是我刚才提交的内容
[root@yejf]~# svnlook cat /opt/svn/test tmp.txt
11111
22222
44444
更换svn地址时uuid不正确情况
ods-sync是之前一个svn的目录对应着另外一个svn地址,,使用重新定位svn的地址时,报uuid不匹配

解决方法:
删除目录下
.svn
的隐藏目录,这时文件夹没有svn的标示了创建svn版本库以及修改配置文件,这里我以test的配置复制过来
svnadmin create /opt/svn/ods-sync
cp /opt/svn/test/conf/* /opt/svn/ods-sync/conf再使用svn重新导入操作


然后再做检出的操作(选择检出到非空文件夹)到当前目录

这时可以看到有svn的标示了





