暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SVN安装及使用

叶同学专栏 2021-04-16
617

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不匹配

解决方法:

  1. 删除目录下.svn
    的隐藏目录,这时文件夹没有svn的标示了

  2. 创建svn版本库以及修改配置文件,这里我以test的配置复制过来

    svnadmin create /opt/svn/ods-sync
    cp /opt/svn/test/conf/* /opt/svn/ods-sync/conf

  3. 再使用svn重新导入操作


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


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



文章转载自叶同学专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论